我有一个表格:
User1 A
User2 A
User2 B
User3 C
User4 A
User4 C
User5 D
除此之外,我需要仅选择出现过一次的用户。例如,从上面我想要 User1、User3、User5。我可以使用类似 row_number()
的方法来删除重复项,但这将为所有用户返回一行,即使是那些拥有超过 1 个条目的用户,这不是我想要的。我也不能使用 DISTINCT
,例如 User2 A
和 User2 B
不会被捕获,因为它们不相等。
最佳答案
使用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);
关于mysql - 选择一次SQL出现ID的所有记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40493583/