sql 按多列空值排序

问题描述 投票:0回答:3

我的结果集在表变量中如下所示(抱歉格式不佳):

RootID | RootName | ChildId | ChildName
1      |  Bob     |  null   |   null   
1      |  null    |    4    |   Tim
1      |  null    |    6    |   Cindy
2      |  Alice   |  null   |   null
2      |  null    |  7      |   Joe 
2      |  null    |    9    |   Jack
3      |  Frank   |  null   |   null 
3      |  null    |   17    |   ken

我想做的是按 RootName ASC 然后 ChildName ASC 对它们进行排序,以按字母顺序排列它们。有什么建议吗?预先感谢

sql sql-order-by
3个回答
1
投票

如果它适用于您的应用程序,我会重写查询以消除空值。我忍不住这么想

RootID | RootName | ChildId | ChildName  
1      |  Bob     |    4    |   Tim  
1      |  Bob     |    6    |   Cindy  
2      |  Alice   |  null   |   Joe   
2      |  Alice   |    4    |   Jack  
3      |  Frank   |    7    |   ken

合作起来会更容易。 (呃,Alice/Joe 的 NULL 是一个错字,对吧?)


1
投票

呃...这个怎么样?

select * from yourtable order by RootName ASC, ChildName ASC

您可以使用

NULLS LAST
NULLS FIRST
(至少在 Oracle 中)来控制空值应放置在排序中的位置。


1
投票
select rec_id,gr_id from jegad order by 1 desc

select isnull(rec_id,'-'),isnull(gr_id,'-') from jegad order by 1 desc

按情况排序,当 Col 为 NULL 时,然后 1 Else 0 结束,Col

© www.soinside.com 2019 - 2024. All rights reserved.