我有一张表格:
User1 A
User2 A
User2 B
User3 C
User4 A
User4 C
User5 D
并且我需要选择仅出现一次的用户。所以例如,从上面我想要User1,User3,User5。我可以使用row_number()
之类的东西来删除重复项,但是这会为所有用户返回一行,即使是那些有多个条目的用户,这也不是我想要的。我无法使用DISTINCT
,因为例如User2 A
和User2 B
不会被捕获,因为它们不相等。
答案 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);