MYSQL选择具有最新日期的所有记录

时间:2016-11-17 15:08:48

标签: php mysql select

我有一个存储交易历史的数据库,主要是评论更新。因此,我接受具有相同ID的多个记录。

我需要做的是拉入所有记录并显示每条记录的最新记录。

以下是具有相同UID的2条记录的示例。突出显示的记录是2中的最新记录。

2 rows from database

以下是我尝试的其中一个查询:

 SELECT 
   uid
   ,voyage
   ,MAX(comments)
   ,MAX(edituser)
   ,MAX(editdate)
 FROM 
   table
 GROUP BY
   uid
 ORDER BY
   uid

这是返回的相同UID:

result from database

如果您注意到,它是最新的用户和editdate,但它不是最新的评论,应该是'这是测试评论'。

我已经尝试了几个查询,但这是我最接近返回每条记录的最新查询。

我试过这个链接:SQL Select record with most recent date

但我认为在这种情况下我不需要使用任何JOINS,因为一切都在同一个表中。但话说回来,我的力量不在于MYSQL。

我希望有人可以通过提供正确(和更好)的查询来帮助我。

3 个答案:

答案 0 :(得分:1)

如果那是你想要的输出,那么你应该使用MIN()代替MIN(comments)

答案 1 :(得分:1)

有了类似的东西,你可能最好使用子选择。

SELECT 
    t1.uid,
    t1.voyage,
    (SELECT comments FROM table t2 WHERE t2.uid = t1.uid AND t2.editdate = MAX(t1.editdate) LIMIT 1) as comments,
    (SELECT edituser FROM table t2 WHERE t2.uid = t1.uid AND t2.editdate = MAX(t1.editdate) LIMIT 1) as edituser,
    (SELECT editdate FROM table t2 WHERE t2.uid = t1.uid AND t2.editdate = MAX(t1.editdate) LIMIT 1) as editdate,
FROM table t1
GROUP BY t1.uid
ORDER BY t1.uid

每个子选择将其缩小到相同的uid,然后选择具有最新editdate的那个。

答案 2 :(得分:0)

按降序将您的订单更改为editdate:

... ORDER BY editdate DESC