1

我对可以按几列中的任何一列排序的表有一些查询,以及结果集中一行的 id。如何获取下一条或上一条记录(或完整结果集中 id 的偏移量)。

IE。假设我有下表

ID First_Col Second_Col Name
1   34        24         John
2   40        22         James
3   48        5          Hugh

如果按 first_col 排序,并且给定 id 2,则下一条记录将为 3,但如果按 Second_Col 排序,则下一条记录将为 1。

给定 sortBy 表达式(传递给我的函数)和 id,我怎样才能轻松找到下一条记录?

4

2 回答 2

2

这应该有效:

SELECT
*
FROM
names
WHERE
Second_Col > (SELECT Second_Col FROM names WHERE ID = 2)
ORDER BY
Second_Col 
LIMIT 1

http://sqlfiddle.com/#!2/fac71/3

于 2012-08-26T15:24:26.893 回答
0

你在这里:http ://sqlfiddle.com/#!3/d8761/5

可能它可以更有效地完成,但它有效:

SELECT T.ID from TBL T WHERE 
T.SECOND_COL=
(SELECT MIN(TT.SECOND_COL) FROM TBL TT WHERE TT.SECOND_COL>(SELECT TTT.SECOND_COL FROM TBL TTT WHERE ID=2))
于 2012-08-26T15:21:03.547 回答