我在数据库中有一个具有唯一ID的表。 我有一个页面,其中显示了一个特定的ID,并为下一个和前一个ID提供了链接。 我必须通过一个单独的mysql查询得到那些上一个和下一个id。我所拥有的是我们正在处理其数据的特定id。 id不是连续的数字,因为有时一些id也会被删除。(例如1,2,3,7,9,10,15等)
那么如何才能在一个查询中获得这两个上一个和下一个id?
答案 0 :(得分:6)
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
;
将YourId替换为实际ID,并将YourTable替换为有效的表名。如果任何值为NULL
,那么给定的没有next / prev元素。
答案 1 :(得分:1)
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
答案 2 :(得分:0)
你可以试试像 -
SELECT id FROM yourtable where id&gt; '$ current_page_id'下一个限制1
SELECT id FROM yourtable where id&lt; '$ current_page_id'上一个
的LIMIT 1你可以按照@RaYell的答案进行一次查询。
答案 3 :(得分:-1)
SELECT MAX(id) FROM mytable WHERE id < 11
要获得11之前的ID
SELECT MIN(id)FROM mytable WHERE id&gt; 11
获取id AFTER 11