我有一张插入了一些主要ID的表。
在另外一个帖子中,我已经完成了我所要求的一半答案,对此我感到非常感谢。 (MySQL select statement returning results in circle mode)
我试图没有运气来完成另一半。我要实现的是一条select语句,它将使我与以下示例相反。
DROP TABLE IF EXISTS my_table;
CREATE TABLE my_table (id SERIAL PRIMARY KEY);
INSERT INTO my_table VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9);
为我提供的选择语句:
SELECT * FROM my_table ORDER BY id > 5 DESC, id;
返回6-7-8-9-1-2-3-4-5
我还需要一条select语句来返回:
5-4-3-2-1-9-8-7-6
提前谢谢!
答案 0 :(得分:0)
您需要条件排序:
SELECT * FROM my_table
ORDER BY id < 6 DESC, id DESC;
请参见demo。
结果:
| id |
| --- |
| 5 |
| 4 |
| 3 |
| 2 |
| 1 |
| 9 |
| 8 |
| 7 |
| 6 |
答案 1 :(得分:0)
从您先前的问题来看,您似乎需要找到在数据库中找到下一个和上一个项目的方法。假设
id
id
是主键或其他唯一值id
值id
值这是获取下一个 ID的方法。
SELECT id FROM tbl WHERE id > [[[current_id]]] ORDER BY id LIMIT 1
同样,这是获取上一个值的方法。
SELECT id FROM tbl WHERE id < [[[current_id]]] ORDER BY ID desc LIMIT 1
这些查询仅返回一行,如果没有下一个或上一个
,则不返回任何行当您只需要一个值时,从条件排序方案中获得的好处就不多了