1

いくつかの列のいずれかで並べ替えることができるテーブルに対するクエリと、結果セットの行のIDがあります。次または前のレコード(または完全な結果セットのIDのオフセット)を取得するにはどうすればよいですか。

すなわち。次の表があるとしましょう

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 に答える