2012-02-03 139 views
0

后,我有一个包含以下两个字段一个MySQL表(还有其他的,但他们无关)选择记录ID

creation_time | object_id 
1325384907 | 75b31b2c-78e9-46b9-afc8-6d90c0df2ee6 
1325388538 | c87734c9-5109-4956-a1cb-7e719ebb4549 
1325430911 | 79fe7f41-4a73-4aa3-b1e4-68be0253d9ab 
[...] 

我希望做的是从表中,通过有序的选择时间,在一定OBJECT_ID

所以那种我想要的东西毕竟对象是像

SELECT * FROM MYTABLE ORDER BY creation_time ASC WHERE object_id > 'c87734c9-5109-4956-a1cb-7e719ebb4549' 

查询应返回1325430911 | 79fe7f41-4a73-4aa3-b1e4-68be0253d9ab(作为次之后的下一个记录在对象ID处)。

这是一个寻呼系统(I.E.''get results after'),我们唯一的信息是uuid,所以我们不能只选择creation_time > x

回答

2
SELECT * FROM MYTABLE 
WHERE CREATION_TIME > (SELECT CREATION_TIME FROM MYTABLE WHERE OBJECTID='YOUR_OBJECT_ID_THAT_YOU_REALLY_KNOW' LIMIT 1) 
ORDER BY CREATION_TIME ASC 

请注意LIMIT 1,因为如果子查询返回比1分的结果更多,查询将失败

+0

您需要吗?理解你的问题真的很复杂。请如果不是这样,请添加评论,我会很高兴编辑我的答案。谢谢。 – 2012-02-03 14:40:43

0
SELECT Creation_Time, Object_ID 
FROM `tableName` 
WHERE Creation_Time > 
     (SELECT Creation_Time 
     FROM `tableName` 
     WHERE Object_ID = 'idhere') 
ORDER BY Creation_Time 
+0

请注意此答案,如果子查询返回多于1个结果,则查询将失败。此外,用户需要通过ASC进行排序,默认情况下,mysql是DESC。 – 2012-02-03 14:46:07

+1

@Leandro:如果我没有完全错误,那么在所有SQL产品中默认为'ASC'。 – 2012-02-03 14:52:46

+0

Doh!我很惭愧,我没有想到这个=( – Smudge 2012-02-03 14:52:52