我有一个MySQL表,其中有一个来自另一个表的外键id。这个id不是这个表唯一的,所以我可以有很多记录持有相同的id。
我需要找出哪些id在这个表中出现的次数最少,然后拉一个包含它们的列表。
例如,如果我有5个id=1的记录,3个id=2的记录和3个id=3的记录,那么我只想提取ids 2&3。但是,表中的数据经常变化,所以我不知道在任何给定时刻最小值是多少。如果我使用两个查询,这项任务相当简单,但我只尝试使用一个查询。以下是我所拥有的:

SELECT id
FROM table
GROUP BY id
HAVING COUNT(*) = MIN(SELECT COUNT(*) FROM table GROUP BY id)

如果我替换COUNT(*)=3,则会出现结果,但是使用上面的查询会产生一个错误,即MIN未正确使用。有什么建议吗?

最佳答案

select子句中需要一个doublehaving

SELECT id
FROM table
GROUP BY id
HAVING COUNT(*) = (SELECT MIN(cnt) FROM (SELECT COUNT(*) as cnt FROM table GROUP BY id) t);

关于mysql - 获取列表,其中包含在表中找到的最短时间的项目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24959376/

10-12 12:46
查看更多