2013-03-13 43 views
1

考慮這個SQL:查詢中的行固定值

SELECT c1 AS C1, 
     1 AS NO 
FROM t1 
WHERE c1 = 'abc' 
UNION 
SELECT c1 AS C1, 
     2 AS NO 
FROM t2 
ORDER BY NO 

,你可能會注意到自己,工會之前第一個SELECT語句只是一個旁路到一個新值添加到第二個查詢返回的列表。

有沒有辦法在查詢中不涉及t1?這是我的感覺,這是沒有必要的,但無法用這個查詢做得更好。

結果:

C1 |NO 
--------------- 
abc |1 
def |2 
ghi |2 
jkl |2 
mno |2 
etc |2 
--------------- 
+0

你雖然選擇在第一部分中列'c1'。如果沒有't1',你怎麼做? – hsan 2013-03-13 10:50:04

+0

'正如你可能會注意到的那樣,union之前的第一個select語句只是一個旁路,以便爲第二個查詢返回的列表添加一個新值。'我不認爲'UNION'這樣做... – Sachin 2013-03-13 10:50:04

+0

請顯示究竟是什麼輸出結果,你想要什麼,你想要消除什麼 – 2013-03-13 10:51:22

回答

5

當您添加1 AS NO,你可以添加'abc' AS C1

SELECT 'abc' AS C1, 
     1 AS NO 
    FROM DUAL 
UNION 
SELECT c1 AS C1, 
     2 AS NO 
    FROM t2 
ORDER BY NO; 
+1

中加入很酷我認爲沒有'FROM'子句可能會給出錯誤 – MozenRath 2013-03-13 10:55:08

+0

您可以選擇任何不在表格中而不使用from子句的東西。因此,您可以選擇靜態字符串或環境變量(如current_timestamp),並且不需要包含from。 – Jester 2013-03-13 10:58:20

+0

這不適用於我的數據庫! – MozenRath 2013-03-13 11:01:06