0

我有一个包含以下两列的消息表:

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是唯一的。此外,可以同时发送两条消息。

4

3 回答 3

2

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

SELECT `id`
FROM `messages` 
WHERE `sent_date` >= (SELECT `sent_date` FROM `messages` WHERE `id` = 46)
AND `id` <> 46
于 2012-09-21T20:50:13.333 回答
2

您可以对 id 46 的 sent_date 使用子选择,如下所示:

select * from message_table where sent_date > (select sent_date from message_table where id = 46)
于 2012-09-21T20:50:22.727 回答
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)
于 2012-09-21T20:50:25.720 回答