打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
mysql,分组(group by)与排序(order by)同时使用
userphoto

2023.11.02 北京

关注

先说一下SQL执行顺序:
from => join => on => where => group by => having => select => order by => limit
having、where:都是条件查询,区别在于having可以用字段别名和聚合函数。
具体区别见:https://blog.csdn.net/W_Kenneth/article/details/110950145

测试数据表:reward

要求:查询用户最新的奖金数:
结果:

正确写法:

1、SELECT r.uid,r.money FROM (
SELECT MAX(id) id FROM reward GROUP BY uid
) a LEFT JOIN reward r ON a.id = r.id;

2、SELECT uid, money FROM (
SELECT * FROM reward ORDER BY id desc limit 4
) as a GROUP BY a.uid;
– limit需要大于最后的结果的条数
– mysql5.7之后,子查询中的排序不生效,加上limit使排序生效

错误写法:

SELECT id,uid,money FROM reward ORDER BY id desc GROUP BY uid;
直接报错:

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
mysql order by group by
MYSQL分页limit速度太慢优化方法
mysql数据库千万级别数据的查询优化和分页测试
MySQL语句ORDER BY如何通过索引优化
10条SQL优化语句,让你的数据库跑得更快!
Mysql查询语句进阶知识集锦
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服