前言
最近一年由于工作需要大部分使用的都是nosql数据库,对关系型数据库感觉越来越陌生,一个由
group by和
order by引发的血案由此而生。在此做个记录,以备不时之需。
需求
首先,看一下整体的表结构。
现在查找每个
barCode中最新的数据。
由于数据太多,不是很好看到效果。我们就拿一个
barCode为
4565789的数据做示例。
SELECTbarCode,
priCommodityID,
createDateFROMtb_history_versionWHEREbarCode = '4565789'ORDER BYcreateDate DESC;

试错
由于很久没有写过sql了。所以首先想到了用 group by和order by组合查询。
SELECTbarCode,
priCommodityID,
createDateFROMtb_history_versionWHEREbarCode = '4565789'GROUP BYbarCodeORDER BYcreateDate DESC;
结果如下:
可以看到这并不是我们想要的结果,
order by没有任何效果。
接下来就试一下运用子查询的方式将两者结合。先排序再分组
SELECT*FROM(SELECTbarCode,
priCommodityID,
createDateFROMtb_history_versionWHEREbarCode = '4565789'ORDER BYcreateDate DESC) AS AGROUP BYA.barCode;
结果还是令人失望的
解决
上面两种方式试过了,虽然结果让人伤心,但是工作还是要继续。于是就网上找各种资料,看能否用其他方式解决问题。偶然间看到了
group_concat可以实现分组排序,就拿来试一试
SELECTbarCode,
GROUP_CONCAT(
priCommodityIDORDER BYcreateDate DESC) AS priCommodityID,
GROUP_CONCAT(
createDateORDER BYcreateDate DESC) AS createDateFROMtb_history_versionWHEREbarCode = '4565789';
结果如下
可以看到顺序没问题了,但是所有数据都被拼接在一起了。需要进一步做截取字符的处理
SELECTbarCode,
SUBSTRING_INDEX(
group_concat(
priCommodityIDORDER BYcreateDate DESC),',',1) AS priCommodityID,
SUBSTRING_INDEX(
group_concat(
createDateORDER BYcreateDate DESC),',',1) AS createDateFROMtb_history_versionWHEREbarCode = '4565789'GROUP BYbarCode;

ok!到这里就发现已经实现我们刚开始的需求了。
总结
group by和
order by同时使用是没有效果的,可以使用
group_concat和
groub by替代。
group_concat内可以实现字段排序。
参考文章
首发地址
http://www.devzxd.top/2017/05/27/mysql-groupby-orderby.html
编辑推荐:
- mysql中group by和order by同时使用无效的替代方案02-28
- 总结MySQL的高级查询(二)02-28
- MySQL高级查询之理解与使用实例02-28
- 对MySQL的初步了解02-28
- 基于MySQL的关系型云数据正式上线02-28
- 使用mysqldump命令实例详解02-28
- mysql中对表的操作教程02-28
- RocksDB上锁机制的实例详解02-28
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- mysql中group by和order by同时使用无效的替代方案
mysql中group by和order by同时使用无效的替代方案
26-02-28 - mysql登陆远程数据库怎么操作?
mysql登陆远程数据库怎么操作?
26-02-28 - 学习基础mysql语法
学习基础mysql语法
26-02-28 - MySQL中基本语法与语句详解
MySQL中基本语法与语句详解
26-02-28 - mysql5.7.18字符集配置
mysql5.7.18字符集配置
26-02-28 - myeclipse上spring+mybatis+axis2发布webservice接口的问题
- MySQL常见的数据类型详细介绍
MySQL常见的数据类型详细介绍
26-02-28 - 深入了解安装和配置mysql 8.0.17的方法
深入了解安装和配置mysql 8.0.17的方法
26-02-28 - MySQ中基本语法与语句的介绍
MySQ中基本语法与语句的介绍
26-02-28 - MySQL基础内容
MySQL基础内容
26-02-28
