我有桌子:
id | date_submitted
1 | 01/01/2017
1 | 01/02/2017
2 | 01/03/2017
2 | 01/04/2017
我正在寻找正确的SQL来选择每一行,每id
只有一行date_submitted
具有最新值。
因此SQL应返回上表:
id | date_submitted
1 | 01/02/2017
2 | 01/04/2017
查询也需要选择行中的所有内容。
感谢您的帮助。
答案 0 :(得分:1)
您可以在子查询中找到每个id的最大日期,并将其与原始表连接,以获取包含所有列的所有行(假设除了id和date_submitted之外还有更多列),如下所示:
select t.*
from your_table t
inner join (
select id, max(date_submitted) date_submitted
from your_table
group by id
) t2 on t.id = t2.id
and t.date_submitted = t2.date_submitted;
请注意,如果有多行,其中date_submitted等于该id的max date_submitted,则此查询将返回id的多行。如果你真的只想要每个id一行,那么解决方案会有所不同。
如果您只需要使用id和最大日期:
select id, max(date_submitted) date_submitted
from your_table
group by id