【发布时间】:2025-12-09 21:25:01
【问题描述】:
我想根据两列对表格进行排序,首先是 asc 排序,第二个如果第一个字段是奇数则按 asc 排序,如果第一个字段是偶数则按 desc 排序。
例如我在一个表中有一些数据
我想把它排序成这样
这个sql怎么写?
【问题讨论】:
-
sql-server,但是如果两个数据库都可以写那就再好不过了
标签: sql sql-server
我想根据两列对表格进行排序,首先是 asc 排序,第二个如果第一个字段是奇数则按 asc 排序,如果第一个字段是偶数则按 desc 排序。
例如我在一个表中有一些数据
我想把它排序成这样
这个sql怎么写?
【问题讨论】:
标签: sql sql-server
当FirstField 是偶数时,您可以简单地ORDER BY -1 * SecondField。
SELECT *
FROM tbl
ORDER BY
FirstField,
CASE
WHEN FirstField % 2 = 0 THEN -1 * SecondField
ELSE SecondField
END
【讨论】:
您可以使用三个排序,并保持未使用的一个不变:
select *
from myTable
order by FirstField,
case when FirstField % 2 = 0 then SecondField else 0 end desc,
case when FirstField % 2 = 1 then SecondField else 0 end asc
【讨论】: