我有一个date字段,显示为从今天起的天数。因此2055-01-01和1950-01-01将分别显示为正数和负数。现在,我希望对它们进行排序,以便非负数首先以升序排列,然后负数以降序排列。例如:
date
2055-01-01
1950-01-01
0 1 2 3 4 -1 -2 -3
以下内容也可以工作:
ORDER BY expiry < CURRENT_DATE, abs(expiry - CURRENT_DATE)
但是,此表单不会使用索引来按所需顺序生成行。如果您的查询将从中受益(从表中选择大多数行或使用限制),则需要使用并集:
SELECT ... WHERE ... AND expiry >= CURRENT_DATE ORDER BY expiry UNION ALL SELECT ... WHERE ... AND expiry < CURRENT_DATE ORDER BY expiry DESC