SQL在单个查询中从已知ID获取下一个条目

时间:2013-05-21 23:26:18

标签: sql

我想知道如何获取SQL数据库中下一行的数据,假设我知道当前条目的ID并且表按ID排序。

通常情况下,当按ID排序时,人们会认为要获取上一个/下一个条目,您只需要对保存ID的变量进行减法/加1,然后使用新ID运行SELECT查询,但这会造成表中有漏洞时会出现问题,ID如下:

... 13,14,18,21

等等。

一种方法是循环使用您的编程语言,运行查询并在每次运行时添加1直到找到一行,但这可能会对数据库造成负担。有没有办法在一个查询中找到它?

3 个答案:

答案 0 :(得分:2)

我在考虑这是一个看似合理的问题,考虑到我甚至想过它一秒钟。所以我想在这里分享我的解决方案!

我要做的是解决这个问题,就是创建一个新的查询,其中新的id小于/大于旧的id,如下所示:

SELECT *
FROM myTable t
WHERE t.id > 27
ORDER BY t.id
LIMIT 1

通过执行此操作并将结果限制为1,您可以保证您将获得27之后的条目。

这也适用于日期排序。

答案 1 :(得分:2)

这个怎么样:

Select MIN(myTable.Id) FROM myTable WHERE myTable.Id > 27

答案 2 :(得分:0)

使用min()获取下一个ID号。比如21之后的下一个id将由此查询给出。

select min(test_id) as next_test_id
from test
where test_id > 21

将其加入原始表以获取该ID号的行。

select *
from test
inner join (select min(test_id) as next_test_id
            from test
            where test_id > 3 ) t2
        on test.test_id = t2.next_test_id