2011-03-07 64 views
0

我有一个功能可以获取特定ID的记录,并有两个链接供上一个和下一个记录使用。现在我有单独的查询来获取下一个ID:获取查询ID前面的ID并继续查询

$query = "SELECT id FROM presentations WHERE id > '$getId' ORDER BY id ASC LIMIT 1"; 

$ getId是当前的ID。

有没有办法整合成一个查询?

+0

他们总是会按顺序吗?如果不需要单独的关系表来轻松访问prev/next。 – 2011-03-07 16:59:13

回答

2
SELECT A.id AS previd, B.id AS nextid 
FROM 
    (SELECT id FROM presentations WHERE id < '$getId' ORDER BY id DESC LIMIT 1) A, 
    (SELECT id FROM presentations WHERE id > '$getId' ORDER BY id ASC LIMIT 1) B 

返回2列:previdnextid周围$的getId

+0

从技术上讲,现在有3个查询,但我看不出任何其他方式做这个体面。所以,+1 – 2011-03-07 17:09:17

+0

注意编辑 - 我错过了第一个'ORDER BY'中的'DESC'修饰符 – 2011-03-07 17:13:15

0

我认为你可以使用内部查询

SELECT id FROM presentations 
WHERE id >= (SELECT id FROM presentations WHERE id < '$getId' ORDER BY id DESC LIMIT 0 , 1) 
ORDER BY id ASC LIMIT 0 , 3 

第一阵列结果将是此前的纪录,第二次将是您当前记录,最后将是你的最后一个记录。