如果我有这些数据:
code1 code2
1 10 <-- Desired (1 appears more than once)
1 11 <-- Desired (1 appears more than once)
2 20
3 30 <-- Desired (3 appears more than once)
3 31 <-- Desired (3 appears more than once)
4 40
5 50
...我想编写一个单个 SQL 查询,其结果如下:
code1 code2
1 10 <-- This result appears because 1 appears more than once above
1 11 <-- This result appears because 1 appears more than once above
3 30 <-- This result appears because 3 appears more than once above
3 31 <-- This result appears because 3 appears more than once above
(即,返回 code1
列中的任何数据多次出现的所有行的单个 SQL 查询)...
我可以写什么SQL?可能吗?
这是我目前所拥有的,但不起作用:
// WARNING!
// INVALID SQL
SELECT
code1,
code2
FROM
mytable
GROUP BY code1,
code2
HAVING COUNT(code1) > 1 <-- This line is invalid
// WARNING!
// INVALID SQL
与其继续与之抗争……我想我会在 StackOverflow 上提问。谢谢!
(允许使用任何特定于 MySQL 的命令,如果它们可能有帮助的话。)
最佳答案
你可以这样试试:
SELECT code1, code2
FROM myTable
WHERE code1 IN
(SELECT code1 FROM myTable GROUP BY code1 HAVING COUNT(code1) > 1)
或者像这样使用 INNER JOIN
:
SELECT t.code1, code2
FROM myTable t
INNER JOIN
(SELECT code1 FROM myTable GROUP BY code1 HAVING COUNT(code1) > 1)
s on s.code1 = t.code1
SQLFiddle Demo
关于mysql - SQL:如何过滤以仅返回结果集中的行,其中字段中的某些数据出现在未过滤结果集中的多行中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21717834/