MySQL根据每个ID的最高提交日期为每个ID选择一行

时间:2017-01-30 19:46:52

标签: php mysql

我有桌子:

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

查询也需要选择行中的所有内容。

感谢您的帮助。

1 个答案:

答案 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