SQL 对包含空值的多个列排序

SQL Order By on multiple columns containing Nulls

我有一个包含多列的 table,我想按 table 中的三列排序。我想按批次订购,然后是单位,最后是编号。 Lot 和 Unit 可以包含空值(需要将它们列在底部),而 Number 列不包含 Null。我尝试了一堆案例陈述,但没有给出预期的结果。 - Order by ... Nulls last 不是一个选项。

Lot Unit Number
Null Null 500
Null Null 425
Null Null 424
Null 7 419
Null 9 450
25 Null 475
22 Null 486
22 Null 485
19 7 465
19 9 432

想要的结果:

Lot Unit Number
19 7 465
19 9 432
22 Null 485
22 Null 486
25 Null 475
Null 7 419
Null 9 450
Null Null 424
Null Null 425
Null Null 500

您可以通过检查空值来进行排序:

SELECT *
FROM yourtable
ORDER BY CASE WHEN lot IS NULL THEN 1 ELSE 0 END 
         , lot 
         , CASE WHEN unit IS NULL THEN 1 ELSE 0 END  
         , unit 
         , number 

您已标记您的问题 SQL,但未提及数据库。标准 SQL 有一个非常方便的方法来做你想做的事:

order by Lot nulls last, Unit nulls last, Number

并非所有数据库都支持 nulls lastnulls first,但这是标准的 SQL 解决方案。