SQL查询-如何按字母顺序对部分数据进行排序,并按ID进行排序

时间:2019-07-04 09:39:18

标签: sql sql-server group-by sql-order-by

我有一小部分数据(15条记录),其中我想按字母顺序对其中的一部分进行排序,而一部分按ID进行排序

图1以原始顺序显示了我的数据

enter image description here

查询SELECT * FROM tableName ORDER BY code;

之后

图2现在按字母顺序显示了我的数据,这很好,但是我希望将前2个记录按ID排序

enter image description here

图3显示了我希望数据如何显示

enter image description here

有人可以帮我查询吗?

3 个答案:

答案 0 :(得分:1)

我假设id是一个整数。您可以在CASE子句中使用条件ORDER BY

请注意第一个表达式case when code in ('LUX-INT', 'LUX-CONT') then -id end desc,它将返回idNULL。由于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

无论基础列的类型和排序规则如何,此方法都有效。