您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

MySQL:选择N行,但在一列中仅包含唯一值

MySQL:选择N行,但在一列中仅包含唯一值

可能不是最优雅的解决方案,并且IN在更大的桌子上,其性能可能会受到影响。

嵌套查询获取Birthyear每个城市的最小值。只有具有此Birthyear条件的记录才在外部查询中匹配。按年龄排序,然后限制为3个结果,则可以使您成为所在城市中年龄最大的3个最老的人(Egon Spengler退学。)

SELECT Name, City, Birthyear, COUNT(*) AS ct
FROM table
WHERE Birthyear IN (SELECT MIN(Birthyear)
               FROM table
               GROUP by City)
GROUP BY City
ORDER BY Birthyear DESC LIMIT 3;

+-----------------+-------------+------+----+
| name            | city        | year | ct |
+-----------------+-------------+------+----+
| Henry Jones     | Chicago     | 1899 | 1  |
| Mac Taylor      | New York    | 1955 | 1  |
| Sarah Connor    | Los Angeles | 1959 | 1  |
+-----------------+-------------+------+----+

-添加GROUP BY City到外部查询中,因为具有相同出生年份的人将返回多个值。如果对外部查询进行分组,则可以确保每个城市仅返回一个结果,如果超过一个人的最小值为Birthyear。该ct列将显示该城市中是否存在不止一个Birthyear

MySQL 2022/1/1 18:50:23 有325人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶