我有一小段数据(15条记录),其中一部分按字母顺序排序,另一部分按ID排序
图1按原始顺序显示了我的数据

执行查询SELECT * FROM tableName ORDER BY code;之后
图2现在按字母顺序显示了我的数据,这很好,但我希望前两条记录按id排序

图3显示了我希望数据的外观

有人能帮我解决这个问题吗?
发布于 2019-07-04 17:56:47
我假设id是一个整数。您可以在ORDER BY子句中使用条件CASE。
注意对于第一个表达式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发布于 2019-07-04 17:41:33
以下情况下的用例
SELECT * FROM tableName ORDER BY case when code in ('LUX INT','LUX-CONT') then id else code end发布于 2019-07-04 19:32:00
我会这样写:
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这与基础列的类型和排序规则无关。
https://stackoverflow.com/questions/56885030
复制相似问题