在MySQL中,group by比较灵活,没有强制要求 字段必须在group by 中,(有 SQL server使用的童鞋应该知道,在SQL server的group by 使用时,select 字段必须是 group by中的字段或者使用聚合函数查询其他字段),MySQL中的group by 默认取查询出来的第一天数据,max和min 函数也不能直接改变整条数据的获取,只是对相应的字段进行取最大或者最小值。
MySQL 5.7版中 如果先进行子程序再进行 group by 操作,需要注意 在子程序中必须添加 limit ,否则子程序不执行,而是直接执行group by 外面的语句,得不到想要的结果。
示例:
id | name | dept | salary |
1 | 小赵 | 开发部 | 8000 |
2 | 小钱 | 开发部 | 8900 |
3 | 小孙 | 运营部 | 7000 |
4 | 小李 | 运营部 | 7777 |
5 | 小周 | 客服部 | 6666 |
MySQL: select * from (
select * from staff order by salary) as ss
group by dept;
没有得到相应的结果。
执行
select * from (
select * from staff order by salary limit 10 ) as ss
group by dept;
正确获取预期数据结果