2013-07-12 16 views
-3

我有4個select表,Union All作爲connect0r與這些表。SQL Sorting in'Union All'條件

Select [] from [a] inner join [b] on a.[] = b.[] 
where [] 

Union All 

Select [] from [a] inner join [b] on a.[] = b.[] 
where [] 

Union All 

Select [] from [a] inner join [b] on a.[] = b.[] 
where [] 

Union All 

Select [] from [a] inner join [b] on a.[] = b.[] 
where [] 

我已經試圖讓order by [a] asc在最後一行在每個select線,但它仍然沒有工作,成了錯誤。

+1

你能告訴我們完整的sql嗎?符號'[]'和'[a]'對我來說沒有意義。 – Parado

+0

[a]是表名?你不應該試圖通過表名 – JsonStatham

回答

2

在第一select你必須有列別名爲A

Select col1 as a [...] from [a] inner join [b] on a.[] = b.[] where []  
Union All 
Select [] from [a] inner join [b] on a.[] = b.[] where []  
Union All  
Select [] from [a] inner join [b] on a.[] = b.[] where []  
Union All  
Select [] from [a] inner join [b] on a.[] = b.[] where [] 
order by a 
+0

來訂購每個「where」不同的條件。 所以,如果我喜歡@parado寫,它只是最後一個「選擇」,排序很好。 – anakpanti

+0

@anakpanti您按列排序不是條件 – Parado

+0

@anakpanti - 您只爲'UNION [ALL]'查詢應用一個ORDER BY',它適用於* entire *結果集,而不僅僅是「最後選擇」 –

0

你只需把你的ORDER BY子句在聲明的最後,引用先選擇列名/別名。

例如,

SELECT a,b customName 
FROM T1 
WHERE a = 'yourFilter' 
UNION ALL 
SELECT foo1,foo2 
FROM T2 
WHERE foo2 IN ('otherFilter','otherFilter2') 
ORDER BY customName DESC, a