mysql - 在不使用 INNER JOIN 的情况下选择具有较大日期的唯一行
问题描述
假设表 tbl 中有数据:
c_id id date
251 215682 2016-12-23 11:57:57
251 218596 2017-03-28 14:08:59
251 230756 2019-12-28 16:09:20
254 254 2017-12-28 16:09:20
254 391849 2019-09-16 15:48:54
254 431331 2019-09-16 15:48:54
我希望得到:
c_id, id, date
251 230756 2019-12-28 16:09:20
254 391849 2019-09-16 15:48:54
还有一件事需要注意。对于相同的 c_id,可能存在具有重复日期的行。比如c_id = 254的情况,返回哪个或者返回id大的没有区别,但这不是本题的问题。
这是 SQL 小提琴页面http://sqlfiddle.com/#!9/e7bc37/1
如何在 mysql 5.7 中实现这一点?
解决方案
假设这id
是唯一的,您可以使用相关子查询limit
:
select t.*
from t
where t.id = (select t2.id
from t t2
where t2.c_id = t.c_id
order by t2.date desc
limit 1
);
推荐阅读
- vue.js - Vuejs-pdf 打印
- angular-material - 材质选项卡中的 ag-grid
- sass - Svelte 3 无法编译 SCSS
- php - 调用未定义的方法 League\Flysystem\Filesystem::store
- python - 使用 Penelope 将 xml/stardict 字典转换为 Bookeen 格式
- swift - 多个 ui 元素破坏了 WidgetExtension
- java - Spring Boot - Thymeleaf - 重定向到错误页面
- arduino - 无法在 macOS Catalina 中上传 Arduino 草图,同步错误但串行工作
- java - Kotlin:公共 getter 返回不可变列表,但私有 getter 应返回可变列表
- ios - UIKit 中的 Xcode 文档选择器委托