没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
假设有一个表:reward(奖励表),表结构如下: CREATE TABLE test.reward ( id int(11) NOT NULL AUTO_INCREMENT, uid int(11) NOT NULL COMMENT '用户uid', money decimal(10, 2) NOT NULL COMMENT '奖励金额', datatime datetime NOT NULL COMMENT '时间', PRIMARY KEY (id) ) ENGINE = INNODB AUTO_INCREMENT = 1 CHARACTER SET utf8 COLLATE
资源详情
资源评论
资源推荐

MySQL group by和和order by如何一起使用如何一起使用
假设有一个表:reward(奖励表),表结构如下:
CREATE TABLE test.reward (
id int(11) NOT NULL AUTO_INCREMENT,
uid int(11) NOT NULL COMMENT '用户uid',
money decimal(10, 2) NOT NULL COMMENT '奖励金额',
datatime datetime NOT NULL COMMENT '时间',
PRIMARY KEY (id)
)
ENGINE = INNODB
AUTO_INCREMENT = 1
CHARACTER SET utf8
COLLATE utf8_general_ci
COMMENT = '奖励表';
表中数据如下:
现在需要查询每个人领取的最高奖励并且从大到小排序:
如果直接查询:
SELECT id, uid, money, datatime FROM reward GROUP BY uid ORDER BY money DESC;
得到如下结果:
没有得到我们需要的结果,这是因为group by 和 order by 一起使用时,会先使用group by 分组,并取出分组后的第一条数
据,所以后面的order by 排序时根据取出来的第一条数据来排序的,但是第一条数据不一定是分组里面的最大数据。
方法一:
既然这样我们可以先排序,在分组,使用子查询。
SELECT
r.id,
r.uid,
r.money,
r.datatime
FROM (SELECT
id,
uid,
money,
datatime
FROM reward
ORDER BY money DESC) r
GROUP BY r.uid
ORDER BY r.money DESC;
方法二:
如果不需要取得整条记录,则可以使用 max() min()





















weixin_38693589
- 粉丝: 5
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 信管面向对象程序设计--广东药学院.doc
- 灌区水利管理信息化和工程建设与维护管理策略.docx
- C#程序设计方案实验指导书及答案.doc
- U3W-AI-AI人工智能资源
- 大数据背景下如何建构教育质量监测平台.docx
- 混合式学习在《网络安全脚本语言》课程中的应用研究.docx
- 大数据视域下计算机信息处理技术探讨.docx
- 信息系统安全应急演练总结.doc
- 云计算时代-传统虚拟化网络面临着哪些挑战.doc
- 基于单片机与GSM通信家用安防系统的方案设计书.doc
- 2025年求职数据SQL文件,适合MYSQL数据库,数据8万多条,含有北京、上海等多个城市的职位、学历、薪资、公司类型等多个数据,可以进行机器学习、工资预测、推荐等处理
- 板卡电源功耗评估.zip
- MegEngine -硬件开发资源
- 基于esp32的智能植物种植管理器 (1).zip
- PowerWechat是一款基于WeChat SDK for Golang,支持小程序、微信支付、企业微信、公众号等全微信生态.zip
- 基于投资者行为的股票市场模拟.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制

评论0