我有一张这样的表:
id sortindex
1 15
2 3
4 1
5 4
8 6
11 2
13 5
我想在sortindex之前和之后获取行。
例如:
我已经给了id 5(所以,sortindex 4) 该表应按sortindex(ASC)
排序现在我想要获得前一行 应该回来:
id sortindex
2 3
和之后的行 应该回来:
id sortindex
13 5
我必须如何构建查询? (我想要两个Query:一个用于之前,一个用于之后)
答案 0 :(得分:3)
SELECT * FROM table1 WHERE sortindex < 4 ORDER BY sortindex DESC LIMIT 1
UNION ALL
SELECT * FROM table1 WHERE sortindex > 4 ORDER BY sortindex ASC LIMIT 1
答案 1 :(得分:0)
SELECT MAX(id), sortindex
FROM table
WHERE id < @id
UNION ALL
SELECT MIN(id), sortindex
FROM table
WHERE id > @id