繁体   English   中英

SQL Order By 在包含 Null 的多个列上

[英]SQL Order By on multiple columns containing Nulls

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

很多 单元 数字
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

期望的结果:

很多 单元 数字
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 nulls last和 nulls nulls first ,但这是标准的 SQL 解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM