我有一个包含8条记录的用户表。我希望根据字段 id (该表的主键)按降序排列数据,但除了id 3和5之外。
id name
-- ----
3 peter
5 david
8 john
7 stella
6 jim
4 jack
2 nancy
1 scott除id 3和5外,其余数据应按降序排列,3和5应按升序排列。
发布于 2013-01-16 12:28:35
就像这样:
order by
case
when id = 3 then 999
when id = 5 then 998
else id
end desc这假设您实际上没有超过8行。否则,你必须改变移动3和5到顶部的“魔法”数字。
发布于 2013-01-16 12:29:05
SELECT * FROM user ORDER BY IF(id=3 OR id=5, id, ~id) ASC发布于 2013-01-16 12:29:05
我认为这里的诀窍是使用枚举。
SELECT id, name FROM my_table WHERE id IN (3, 5) ORDER BY ASC
UNION
SELECT id, name FROM my_table WHERE id NOT IN(3, 5) ORDER BY DESChttps://stackoverflow.com/questions/14358456
复制相似问题