mysql - 如何使用 MySQL 查询从集合中获取共同值?
问题描述
我有一张带有 ID、AID 和年份字段的表格。如何在集合中找到最新的共同年份(普通艾滋病成套)
ID AID Year
---------
1 1 2001
2 1 2002
3 1 2003
4 1 2004
5 2 2003
6 2 2004
7 2 2005
8 3 2004
9 3 2005
10 3 2006
2004 年最近一个共同年份
解决方案
我相信这是最简单的方法。
询问
SELECT
Year
FROM
t
GROUP BY
Year
HAVING
COUNT(*) = (SELECT COUNT(DISTINCT t.AID) FROM t)
结果
| Year |
| ---- |
| 2004 |
看演示
这个查询使它更明显为什么它工作
询问
SELECT
Year
, COUNT(*) AS count_per_AID
, (SELECT COUNT(DISTINCT t.AID) FROM t) AS unique_count_per_AID
, (COUNT(*) = (SELECT COUNT(DISTINCT t.AID) FROM t)) AS most_common_value
FROM
t
GROUP BY
Year
结果
| Year | count_per_AID | unique_count_per_AID | most_common_value |
| ---- | -------------- | -------------------- | ----------------- |
| 2001 | 1 | 3 | 0 |
| 2002 | 1 | 3 | 0 |
| 2003 | 2 | 3 | 0 |
| 2004 | 3 | 3 | 1 |
| 2005 | 2 | 3 | 0 |
| 2006 | 1 | 3 | 0 |
此查询返回所有普通年份,而不是最新的普通年份。
确实感谢您发表评论。
解决方法是使用查询
SELECT
Year
FROM
t
GROUP BY
Year
HAVING
COUNT(*) = (SELECT COUNT(DISTINCT t.AID) FROM t)
ORDER BY
t.Year DESC
LIMIT 1
;
看演示