MySQL如何查询最新审核过的一条数据
本文只是项目过程中暂时能想到的一种方法,如果你有其它实现方式,欢迎留言与我交流。
原始数据
id(主键) | organization_id | audit_time(审核时间) |
---|---|---|
2orejelw5td3bwfkv | 2oo2v3mqwrd832efh | 2021-06-02 15:23:37 |
2or7zo75ygc7fi2l7 | 2oo2v3mqwrd832efh | 2021-07-02 15:23:37 |
2or81tr5evpean60d | 202106171149548es5ntrhd | 2021-06-19 11:12:16 |
2or81tt1m5rnw1h0o | 202106171149548es5ntrhd | 2021-05-19 11:57:00 |
2or96z2524ac1zw0v | 202106171149548es5ntrhd | 2021-07-09 13:31:00 |
目标描述:针对每个 organization_id, 根据审核时间,获取最新审核的一条数据
预期结果:
id(主键) | organization_id | audit_time(审核时间) |
---|---|---|
2or7zo75ygc7fi2l7 | 2oo2v3mqwrd832efh | 2021-07-02 15:23:37 |
2or96z2524ac1zw0v | 202106171149548es5ntrhd | 2021-07-09 13:31:00 |
完整 SQL 如下:
1 | SELECT |
关键点说明:
GROUP_CONCAT(id ORDER BY audit_time)
分组后拼接的时候,可以指定排序字段和排序方式,以确保能够按照指定顺序拼接SUBSTRING_INDEX('待截取的字符串',',',-1)
- 第一个参数是待截取的字符串;
- 第二个参数是截取时以什么字符分组,比如这里是以
,
分组; - 第三个参数是截取方向和个数,
-1
表示从末尾截取一组字符(正数从开头开始截取;负数从末尾开始截取)。
关于这两个函数的更多使用方式,参见官方文档或搜索引擎。