首页 > 解决方案 > 在不使用 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 中实现这一点?

标签: mysqlsql

解决方案


假设这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
             );

推荐阅读