2011-04-11 27 views
0

我有2個查詢的順序,我需要有輸出查詢1的結果,追加查詢2的後結果查詢:加入2個有序的查詢結果,而不會丟失(在SQL)

查詢1

SELECT * 
FROM events 
WHERE START >= '2010-1-1' 
ORDER BY START 

查詢2:

SELECT * 
FROM events 
WHERE START < '2010-1-1' 
AND END > '2010-1-1' 
ORDER BY END 

一個結果可能是:
2010年1月1日 - 2010年1月2日 - >從查詢1
2010年1月2日 - 2010年2月1日 - >從查詢1
2009年11月1日 - 2010年2月10日 - >從查詢2
2009年10月1日 - 2010年2月11日 - >從查詢2

換句話說,第一尚未開始的事件尚未按開始排序,然後正在進行的事件按排序排序。

我似乎無法使用加入成爲改變...的順序

+0

你試過'工會'嗎? – RollingBoy 2011-04-11 07:31:49

回答

2

您可以通過列和UNION雙方選擇的結果添加虛擬訂單,只要你喜歡返回命令的結果。

SELECT * 
     , 'Start' AS OrderBy1 
     , Start AS OrderBy2 
FROM events 
WHERE START >= '2010-1-1' 
UNION ALL 
SELECT * 
     , 'End' AS OrderBy1 
     , End AS OrderBy2 
FROM events 
WHERE START < '2010-1-1' 
     AND END > '2010-1-1' 
ORDER BY 
     OrderBy1 DESC 
     , OrderBy2