0

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

通常,在按 ID 排序时,人们会认为要获得上一个/下一个条目,您只需对持有该 ID 的变量减/加 1,然后使用新 ID 运行 SELECT 查询,但这会带来一个问题桌子上有洞,ID如下:

13,14,18,21...

等等。

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

4

3 回答 3

2

我当时认为这是一个合理的问题,考虑到我什至想了一会儿。所以我想在这里分享我的解决方案!

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

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

通过这样做并将结果限制为 1,您可以保证您将获得 27 之后的条目。

这也适用于日期排序。

于 2013-05-21T23:26:17.640 回答
2

这个怎么样:

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

于 2013-05-21T23:30:02.683 回答
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
于 2013-05-22T00:03:49.603 回答