2011-05-12 56 views
1

我有一個resultes組看起來像一個表VAR以下(對不起窮人格式)多列的SQL命令:通過與零點

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按字母順序排列。有什麼建議麼?在此先感謝

+1

不知道我理解的問題。你是否想要做比'ORDER BY RootName,ChildName'能給你更多的東西? – 2011-05-12 13:42:11

+0

你面臨的問題是什麼?你是否希望以某種順序出現空值? – YetAnotherUser 2011-05-12 13:43:01

+0

如果我使用rootname命令,孩子名字我最終失去父母的孩子structer。所有的根名稱都被分組,並且所有的子名稱都被分組。我想先對alpha進行命令,將所有具有相同rootid的行保留在一起,然後按照alpha順序將childid保留在一起。或者至少按照字母順序對根名稱進行排序 – 5n0u7 2011-05-12 13:46:44

回答

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 

會更容易處理。 (呃,那空愛麗絲/喬是一個錯字,對不對?)

1

呃...這是怎麼回事?

select * from yourtable order by RootName ASC, ChildName ASC 

可以使用NULLS LASTNULLS FIRST(至少在Oracle)的控制,其中,所述空值應放置在排序。

+0

NULLS LAST和NULLS FIRST在大多數其他供應商的產品中也有'口味'。 – 2011-05-12 13:51:59

+0

我這麼認爲,這就是爲什麼我提到它。 – 2011-05-12 13:53:33

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 

ORDER BY CASE WHEN上校爲null,則1,否則0結束,山口