mysql - 获取包含在表中找到最少次数的项目的列表

标签 mysql sql

我有一个 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 id
FROM table
GROUP BY id
HAVING COUNT(*) = (SELECT COUNT(*) FROM table GROUP BY id ORDER BY COUNT(*) LIMIT 1);

这会从一组按升序排列的计数中选择第一行的最小值。

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

相关文章:

php - MYSQL Sum 和 Count 在不同的表上,在同一个查询中

php - 向MYSQL中插入字符串和数组的组合

php - 如何在 Codeigniter 中使用 except 代码进行选择

php - 不知道如何从 mysql 中回显所选数据

sql - 从两个表中查询SQLite-选择要返回的值

php - mysql中的存储过程用可变参数进行选择

sql - 使用复杂类型查询 Spark SQL DataFrame

sql - 在单个查询中获取一些随机记录和一些特定记录?

mysql - 如何从众多用户余额中获取最新的余额?

sql - 从 Now() 到 Postgresql 中的 Current_timestamp