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