我有一小部分数据(15条记录),其中我想按字母顺序对其中的一部分进行排序,而一部分按ID进行排序
图1以原始顺序显示了我的数据
查询SELECT * FROM tableName ORDER BY code;
图2现在按字母顺序显示了我的数据,这很好,但是我希望将前2个记录按ID排序
图3显示了我希望数据如何显示
有人可以帮我查询吗?
答案 0 :(得分:1)
我假设id
是一个整数。您可以在CASE
子句中使用条件ORDER BY
。
请注意第一个表达式case when code in ('LUX-INT', 'LUX-CONT') then -id end desc
,它将返回id
或NULL
。由于NULL
将首先出现在ORDER BY
中,因此我使用DESC
并取反id
的值,以使id
升序
order by case when code in ('LUX-INT', 'LUX-CONT') then -id end desc, code
答案 1 :(得分:0)
用例何时
SELECT * FROM tableName ORDER BY case when code in ('LUX INT','LUX-CONT') then id else code end
答案 2 :(得分:0)
我会这样写:
order by (case when code in ('LUX-INT', 'LUX-CONT') then 1 else 2 end), -- put the special codes first
(case when code in ('LUX-INT', 'LUX-CONT') then code end), -- order them alphabetically
id -- order the rest by id
无论基础列的类型和排序规则如何,此方法都有效。