2013-06-22 93 views
0

MY SQL查詢理想的結果在「聯盟」

SELECT id, content FROM table1 
UNION ALL 
SELECT p_id, p_content FROM table2; 

這是給理想的結果,但與第一個SELECT語句的列名。

e.g

如果查詢得到第二個SELECT語句中的數據給它的結果作爲

array (size=2) 
    'id' => string '15' (length=2) 
    'content' => string 'table2 content' (length=22) 

我要與相應的SELECT語句的結果列名。

如果選擇了從第一選擇,然後結果的排列應該是這樣的

array (size=2) 
    'id' => string '15' (length=2) 
    'content' => string 'table1 content' (length=22) 

否則,如果選擇了從第二個SELECT語句的結果,那麼結果的排列應該是這樣的結果

array (size=2) 
    '**p_id**' => string '15' (length=2) 
    '**p_content**' => string 'table2 content' (length=22) 
+5

在一個查詢中不可能。列可以只有一個名稱爲整個結果集 –

+0

cud你給我的建議...我應該怎麼做在這種情況下,我想同樣的結果... –

+0

爲什麼你需要這個在第一個地方?也許還有其他事情要做,以達到你的目標。 – complex857

回答

0

這是不可能的。整個查詢結果中的列名將相同。這些列名實際上是查詢結果的列名,不需要是相同的表(一個或多個)列名:

SELECT id as Numbers, content as Texts FROM table1 
UNION ALL 
SELECT p_id, p_content FROM table2; 

可以執行兩個單獨的查詢,並單獨處理他們的成果。

或者否則你可能會返回一個額外的恆定值,結果之間確定:

SELECT id, content, '1' as TableNr FROM table1 
UNION ALL 
SELECT p_id, p_content, '2' FROM table2; 

現在,對於每一行,你可以問列「TableNr」的值,看它來自哪個表。