MySQL5.5版本MAX函数、MIN函数与GroupBy⼀起使⽤的注意
事项
测试mysql版本 mysql 5.5.53 和 5.5.56,存在以下问题
mysql>select*from test;
+----+-------+------+-------+
| id | name | age | class |
+----+-------+------+-------+
|1| qiu |22|1|
|2| liu |42|1|
|4| zheng |20|2|
|3| qian |20|2|
|0| wang |11|3|
|6| li |33|3|
+----+-------+------+-------+
6 rows in set (0.00 sec)
如果想到每个class⾥⾯的最⼤的age,则需要使⽤group by和max。
groupby是什么函数如下的sql语句,则输出结果有错误:
mysql>select id,name,max(age),class from test group by class;
+----+-------+----------+-------+
| id | name |max(age) | class |
+----+-------+----------+-------+
|1| qiu |42|1|
|4| zheng |20|2|
|0| wang |33|3|
+----+-------+----------+-------+
3 rows in set (0.00 sec)
虽然到的age是最⼤的age,但是与之匹配的⽤户信息却不是真实的信息,⽽是group by分组后的第⼀条记录的基本信息。
如果我使⽤以下的语句进⾏查,则可以返回真实的结果。
mysql>select*from (select*from test order by age desc) as b group by class;
+----+-------+------+-------+
| id | name | age | class |
+----+-------+------+-------+
|2| liu |42|1|
|4| zheng |20|2|
|6| li |33|3|
+----+-------+------+-------+
3 rows in set (0.00 sec)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论