mysql - 选择一次SQL出现ID的所有记录

标签 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() 的方法来删除重复项,但这将为所有用户返回一行,即使是那些拥有超过 1 个条目的用户,这不是我想要的。我也不能使用 DISTINCT ,例如 User2 AUser2 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/

相关文章:

php - 如何防止 PHP 中的 SQL 注入(inject)?

sql - 32位到64位sql server 2008数据库转换

SQL Server 内存中 OLTP 哈希索引设置 BUCKET_COUNT 值

jquery - 单击div时模拟单击div内的选择框

javascript - 如何仅在选择第一个下拉列表后启用第二个下拉列表?

java - hibernate - 从查询结果返回插入脚本

MySQL - 按多行分组

MySQL:如何从 double 类型列中仅获取十进制值?

sockets - 如何在 fdset 中找到哪个套接字描述符无效

php - mysql数据库和多用户