MySQL选择最新的记录ID

时间:2012-09-21 20:46:50

标签: mysql sql database

我有一个Message表,其中包含以下两列:

ID
SENT_DATE

说我在SENT_DATE订购了以下记录:

ID              SENT_DATE

54              2012-09-21 13:25:20
53              2012-09-21 13:25:17
32              2012-09-21 13:25:15
52              2012-09-21 13:25:14
51              2012-09-21 13:25:12
46              2012-09-21 13:25:12
50              2012-09-21 13:25:11

如何在ID = 46(独占)后发送所有新的消息ID?查询应返回以下列表:

ID

54
53
32
52
51

请注意,消息ID不会单调增加,因为它们是由不同的消息队列生成的。但ID是唯一的。此外,可以同时发送两条消息。

3 个答案:

答案 0 :(得分:2)

您可以使用子查询来获取所需ID的sent_date,并返回值更大的所有行:

SELECT `id`
FROM `messages` 
WHERE `sent_date` >= (SELECT `sent_date` FROM `messages` WHERE `id` = 46)
AND `id` <> 46

答案 1 :(得分:2)

您可以对id为46的sent_date使用subselect,如下所示:

select * from message_table where sent_date > (select sent_date from message_table where id = 46)

答案 2 :(得分:1)

使用子查询将解决此问题。

包容性地处理:

SELECT `ID` FROM `messages` WHERE `SENT_DATE` >=
    (SELECT `SENT_DATE` FROM `messages` WHERE `ID` = 46)

专门处理:

SELECT `ID` FROM `messages` WHERE `SENT_DATE` >
    (SELECT `SENT_DATE` FROM `messages` WHERE `ID` = 46)