[英]previous - next query in mysql
我在数据库中有一个具有唯一ID的表。 我有一个页面,其中显示一个特定的ID,并给出了下一个和上一个ID的链接。 我必须通过一个单独的mysql查询来获取这些上一个和下一个ID。我所拥有的就是我们正在处理其数据的特定ID。 ID不是连续的数字,有时某些ID也被删除(例如1,2,3,7,9,10,15等)
那么,如何在一个查询中获得这两个上一个和下一个ID?
SELECT
(SELECT id FROM YourTable WHERE id < YourId ORDER BY id DESC LIMIT 1) AS prev,
(SELECT id FROM YourTable WHERE id > YourId ORDER BY id ASC LIMIT 1) AS next
;
用实际的ID替换YourId并用有效的表名替换YourTable。 如果任何值将为NULL
则给定没有next / prev元素。
SELECT *
FROM (
SELECT *
FROM mytable
WHERE id >= @current
ORDER BY
id
LIMIT 2
) q1
UNION ALL
SELECT *
FROM (
SELECT *
FROM mytable
WHERE id < @current
ORDER BY
id DESC
LIMIT 1
) q2
ORDER BY
id
可能您尝试类似-
从您的表中选择ID,其中ID>'$ current_page_id'LIMIT 1(下一个)
从您的表中选择ID,其中id <'$ current_page_id'LIMIT 1(对于上一个)
您可以按照@RaYell答案进行一次查询。
SELECT MAX(id) FROM mytable WHERE id < 11
在11之前获取ID
从mytable中选择MIN(id),ID> 11
在11月后获取ID
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.