选择列包含多个记录中的相同数据的行

时间:2014-06-02 10:10:04

标签: mysql

有很多关于类似标题的问题,但我找不到一个不涉及分组的答案(GROUP BY x HAVING COUNT(*)> 1),但是我在寻找什么for是一个返回所有未分组行的查询(在MySQL中)。

说我有以下内容:

id  data
1    x
2    y
3    y
4    z

我希望查询返回的是:

2    y
3    y

基于第2行和第3行在数据列中具有相同值的事实。

SELECT * FROM表WHERE [数据包含一些其他行中也存在的值]

2 个答案:

答案 0 :(得分:7)

你必须把它放在子查询中

select * from table where data in (
    select data from table group by data having count(*) > 1
)

答案 1 :(得分:5)

SELECT DISTINCT x.* 
  FROM table1 x 
  JOIN table1 y 
    ON y.id <> x.id      --   ids are NOT equal 
   AND y.data = x.data;  --   but data IS

http://sqlfiddle.com/#!2/f8910

这个查询和上面的fP可能在性能方面大致相当 - 但是用这种方式重写fP并观察它......

SELECT DISTINCT x.id 
  FROM table1 x
  JOIN 
     ( SELECT data FROM table1 GROUP BY data HAVING COUNT(0) > 1 ) y
    ON y.data = x.data;