2013-07-02 20 views
0

問題出在需要返回需要的值以返回將用於Web服務的單行結果集。SQL如何將列追加到單行結果集?

例如,如果我有一個select語句,它當前返回的結果集有3列和1行,有沒有辦法在它自己的列中「附加」一個值?新值可能是任意返回恰好一行的任意選擇的結果。

select a, b, c from d where a = 'id'

col1 col2 col3 
    a  b  c 

新的選擇應該給:

col1 col2 col3 col4 
    a  b  c *NEW* 

在這種情況下,任意被用來表示不一定與任何在原來的SELECT語句中的值或表。

我想知道如何在Oracle中做到這一點,但希望有一個使用標準SQL功能的解決方案,以便大多數數據庫能夠處理它。

編輯:通過NEW我不是說字符串文字'新',但我的意思是我想要「追加」的新選擇語句的結果。

+0

這聽起來很奇怪,如果您需要這樣做,會引起我對數據庫模式設計的質疑。 –

+0

此查詢旨在用於Web服務,它需要單行值。 – mvd

+0

好的,但爲什麼你需要在相同的查詢中有值。您可以查詢數據庫中的這些數據並將其表示出來,但是您希望在響應客戶端時使用這些數據嗎? –

回答

2

如果你想要一個新的select語句,你可以通過兩種方式來實現。一個是selectselect

select col1, col2, col3, 
     (select 'NEW' from d limit 1) as col4 
from d 

另一種是cross join

select d.col1, d.col2, d.col3, const.col4 
from d cross join 
     (select 'NEW' as col4 from d limit 1) const 

我用一個簡單的子查詢只是作爲一個例子。我假設你的子查詢有點複雜。

0
select 
    a, b, c, 
    (select smth from table2 limit 1) as col4 as col4 
from d where a = 'id' 

第二個查詢應返回恰好一行和一列

0

這種類型的結構會奏效。注意當有多行時,你會得到一個交叉連接。

select a,b,c,d 
from (select a,b,c from dual) 
, (select d from dual) 
相關問題