我有一个功能可以获取特定ID的记录,并有两个链接供上一个和下一个记录使用。现在我有单独的查询来获取下一个ID:获取查询ID前面的ID并继续查询
$query = "SELECT id FROM presentations WHERE id > '$getId' ORDER BY id ASC LIMIT 1";
$ getId是当前的ID。
有没有办法整合成一个查询?
我有一个功能可以获取特定ID的记录,并有两个链接供上一个和下一个记录使用。现在我有单独的查询来获取下一个ID:获取查询ID前面的ID并继续查询
$query = "SELECT id FROM presentations WHERE id > '$getId' ORDER BY id ASC LIMIT 1";
$ getId是当前的ID。
有没有办法整合成一个查询?
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列:previd
和nextid
周围$的getId
从技术上讲,现在有3个查询,但我看不出任何其他方式做这个体面。所以,+1 – 2011-03-07 17:09:17
注意编辑 - 我错过了第一个'ORDER BY'中的'DESC'修饰符 – 2011-03-07 17:13:15
我认为你可以使用内部查询
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
第一阵列结果将是此前的纪录,第二次将是您当前记录,最后将是你的最后一个记录。
他们总是会按顺序吗?如果不需要单独的关系表来轻松访问prev/next。 – 2011-03-07 16:59:13