如何编写SQL查询仅返回出现一次的唯一account ID值?
查询仅出现一次的Account ID值
方法一:使用GROUP BY + HAVING子句
这是最直接的实现方式,通过分组统计每个Account ID的出现次数,筛选出仅出现一次的记录:
SELECT account_id FROM 你的表名 GROUP BY account_id HAVING COUNT(*) = 1;
替换你的表名为实际的表名称即可,这个查询会直接返回所有只出现一次的account_id值(比如示例中的2)。
方法二:返回包含目标ID的完整行数据
如果需要获取包含该account_id的整行记录,而非仅ID值,可以用子查询实现:
SELECT * FROM 你的表名 WHERE account_id IN ( SELECT account_id FROM 你的表名 GROUP BY account_id HAVING COUNT(*) = 1 );
方法三:使用窗口函数(适用于支持窗口函数的数据库)
若你的数据库支持窗口函数(如SQL Server、MySQL 8.0+、PostgreSQL等),可以用这种更灵活的方式:
SELECT account_id FROM ( SELECT account_id, COUNT(*) OVER (PARTITION BY account_id) AS occurrence_count FROM 你的表名 ) AS sub WHERE occurrence_count = 1;
内容的提问来源于stack exchange,提问作者Harry Pethel
相关产品推荐
相关产品推荐

