多列空值的sql顺序

时间:2011-05-12 13:38:17

标签: sql sql-order-by

我有一个结果集,在表var中看起来如下所示(抱歉格式不佳):

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命令它们按字母顺序排列。有什么建议?提前致谢

3 个答案:

答案 0 :(得分:1)

呃...呃......这个怎么样?

select * from yourtable order by RootName ASC, ChildName ASC

您可以使用NULLS LASTNULLS FIRST(至少在Oracle中)来控制,应该在排序中放置空值。

答案 1 :(得分: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是一个错字,对吗?)

答案 2 :(得分: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其他0结束,结束