我想知道如何获取 SQL 数据库中下一行的数据,假设我知道当前条目的 ID 并且表按 ID 排序。
通常,在按 ID 排序时,人们会认为要获得上一个/下一个条目,您只需对持有该 ID 的变量减/加 1,然后使用新 ID 运行 SELECT 查询,但这会带来一个问题桌子上有洞,ID如下:
13,14,18,21...
等等。
一种方法是循环使用您的编程语言,运行查询并在每次运行时添加 1 直到找到一行,但这可能会对数据库造成负担。有没有办法在一个查询中找到它?
我想知道如何获取 SQL 数据库中下一行的数据,假设我知道当前条目的 ID 并且表按 ID 排序。
通常,在按 ID 排序时,人们会认为要获得上一个/下一个条目,您只需对持有该 ID 的变量减/加 1,然后使用新 ID 运行 SELECT 查询,但这会带来一个问题桌子上有洞,ID如下:
13,14,18,21...
等等。
一种方法是循环使用您的编程语言,运行查询并在每次运行时添加 1 直到找到一行,但这可能会对数据库造成负担。有没有办法在一个查询中找到它?
我当时认为这是一个合理的问题,考虑到我什至想了一会儿。所以我想在这里分享我的解决方案!
我要解决这个问题,是创建一个新的查询,其中新的 id 小于/大于旧的,如下所示:
SELECT *
FROM myTable t
WHERE t.id > 27
ORDER BY t.id
LIMIT 1
通过这样做并将结果限制为 1,您可以保证您将获得 27 之后的条目。
这也适用于日期排序。
这个怎么样:
Select MIN(myTable.Id)
FROM myTable
WHERE myTable.Id > 27
使用 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