[英]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.