选择SQL出现ID的所有记录

时间:2016-11-08 18:01:28

标签: mysql sql select distinct row-number

我有一张表格:

User1 A
User2 A
User2 B
User3 C
User4 A
User4 C
User5 D

并且我需要选择仅出现一次的用户。所以例如,从上面我想要User1,User3,User5。我可以使用row_number()之类的东西来删除重复项,但是这会为所有用户返回一行,即使是那些有多个条目的用户,这也不是我想要的。我无法使用DISTINCT,因为例如User2 AUser2 B不会被捕获,因为它们不相等。

1 个答案:

答案 0 :(得分:2)

使用GROUP BY

select username
from t
group by username
having count(*) = 1;

如果您知道第二列中没有重复项,那么使用正确的索引可能会更快:

select t.*
from t
where not exists (select 1 from t t2 where t2.username = t.username and t2.col2 <> t.col2);