繁体   English   中英

如果到达最后一行,则从第一行返回

[英]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;

db<>小提琴演示

尝试这个:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM