如何强制元素在 SELECT Mysql 查询结果中的位置? 例如,我有一个包含此数据的“元素”表:
id| name
1 | element1
2 | element2
3 | element3
...
5 | element5
我想手动将 id = 5 的元素放在第二个位置:
id| name
1 | element1
5 | element5
2 | element2
...
3 | element3
通过下面的查询,我可以将元素放在第一位,但不能放在第二或第三位:
SELECT id, IF(id = 5, 1, 0) AS position
FROM元素ORDER BY位置
最佳答案
在不知道其他id的情况下,我可以想到两种方法:
(select * from mytable where id <> 5 limit 1)
union all
select * from mytable where id = 5
union all
(select * from mytable where id <> 5 limit 10000000000000 offset 1)
和
select *
from mytable
order by id = (select min(id) from mytable where id <> 5) desc,
id = 5 desc,
id asc
演示:http://rextester.com/VCVZ23881
更加灵活——你可以把它放在任何位置:
select *
from mytable
order by id <> 5 and id < (select id from mytable where id <> 5 limit 1 offset X) desc,
id = 5 desc,
id asc;
X = position - 1
因此,如果您想将行放在 7
位置,则需要将 X
替换为 6
关于mysql - 强制元素在 mysql 查询中的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42910150/