首页 > 数据库技术 > 详细

mysql group by 和 max同时使用出现的问题

时间:2021-08-14 11:54:25      阅读:12      评论:0      收藏:0      [点我收藏+]

有以下数据表:

select * from group_by_and_max_demo;
+----+-----------+-----+-----------+
| id | name      | age | city      |
+----+-----------+-----+-----------+
|  1 | xiaozhang | 20  | beijing   |
|  2 | xiaoli    | 22  | shanghai  |
|  3 | xiaowang  | 25  | beijing   |
|  4 | xiaoliu   | 21  | shanghai  |
+----+-----------+-----+-----------+

先要查询每个城市中年龄最大的人的名字和id,使用如下sql:

 SELECT id,`name`,MAX(age),city FROM group_by_and_max_demo GROUP BY city;
+----+-----------+----------+-----------+
| id | name      | MAX(age) | city      |
+----+-----------+----------+-----------+
|  1 | xiaozhang | 25       | beijing   |
|  2 | xiaoli    | 22       | shanghai  |
+----+-----------+----------+-----------+

查询结果中beijing年龄最大的年龄是25、名字是xiaozhang、id是1,这个明显不对。实际应该是年龄25、名字xiaowang,id是3。也就是说group by后使用max,其他列并不一定是相应的行,而是当前group by分组后相关的第一条记录。

那应该如何实现这个需求呢?使用如下语句:

SELECT * FROM group_by_and_max_demo WHERE age IN(SELECT MAX(age) from group_by_and_max_demo GROUP BY city); 

+----+----------+-----+-----------+
| id | name     | age | city      |
+----+----------+-----+-----------+
|  2 | xiaoli   | 22  | shanghai  |
|  3 | xiaowang | 25  | beijing   |
+----+----------+-----+-----------+

 

mysql group by 和 max同时使用出现的问题

原文:https://www.cnblogs.com/silenceshining/p/15139480.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!