删除子查询

时间:2017-01-25 12:41:43

标签: mysql sql

我有一个列的表,我需要获得所有重复的行。这是表:

|  name  |
|  ----- |
|    a   |
|    a   |
|    b   |
|    c   |
|    c   |
|    d   |

这是预期的结果集:

|  name  |
|  ----- |
|    a   |
|    a   |
|    c   |
|    c   |

我已经这样做了:

 SELECT t.name FROM my_table t inner join (
        SELECT name, count(1) AS count FROM my_table t2 GROUP BY t2.name HAVING count > 1
      ) AS t1 on t1.name = t.name

没有子查询可以做到吗?

2 个答案:

答案 0 :(得分:3)

评论太长了。

如果您只有一列,那么此输出不会吗?

select name, count(*) as num_duplicates
from t
group by name
having count(*) > 1;

这会为每个名称生成一行,其中包含重复数。如果你只有一列,那么它似乎是更好的输出(对我而言),而不是重复的名称列表。

答案 1 :(得分:1)

您需要首先带上计数名称> 1

select * from my_table where name in 
(select name from my_table having count(name) > 1 group by name )
相关问题