[英]Return from first row if last row reached
表有一个id
列,第 1 到 10 行。我想要:
SELECT id FROM `table` WHERE id > 8 ORDER BY id ASC LIMIT 6
返回:
9
10
1
2
3
4
什么是合适的查询?
SELECT id
FROM `table`
ORDER BY id <= 8, id
LIMIT 6
id <= 8
对于 9 和更高的值将是 false (0),对于低于 9 的值将是 true (1),因此较高的值将首先出现。 然后在每个组中按id
。
这应该适用于任何类似 sql 的语法
SELECT id
FROM `table`
ORDER BY case when id > 8 then 1 else 2 end, id
LIMIT 6
使用ROW_NUMBER
的变体:
SELECT *, ROW_NUMBER() OVER(ORDER BY CASE WHEN id > 8 THEN 0 ELSE 1 END, id) AS rn
FROM `table`
ORDER BY rn LIMIT 6;
尝试这个:
SELECT * FROM (
SELECT id FROM table WHERE id > 8 ORDER BY id
UNION
SELECT id FROM table WHERE id <= 8 ORDER BY id
) temp LIMIT 6;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.