2013-02-01 69 views
0

假設我有以下表格:你可以在不重寫mysql的情況下結合嗎?

Name | Occupation 
A 
B 
C 
D 
E 
Workplace | Phone Number 
A 
B 
C 

我想執行一個選擇的表合併成一個表:

MyName | Type 
A | Person 
B | Person 
C | Person 
D | Person 
E | Person 
A | Workplace 
B | Workplace 
C | Workplace 

如何做到這一點?我想:

SET @a = 'Person' 
SET @b = 'Name' 
SELECT Name, @a FROM tablea 
UNION 
SELECT Workplace, @b FROM tableb 

和輸出似乎是所有「人」在第二列,也沒有「工作場所」。我究竟做錯了什麼?

或者是有什麼方法,我可以做這樣的事情從一個單一的SELECT語句得到如下:

MyName 
A_Person 
B_Person 
C_Person 
D_Person 
E_Person 
A_Workplace 
B_Workplace 
C_Workplace 

注:我使用MySQL工作臺

+1

我無法重現您的問題:http://sqlfiddle.com/#!2/bf8746/5請顯示您使用的確切代碼。 – bernie

+1

只需對您的查詢稍作修改,即可獲得您想要的輸出:http://sqlfiddle.com/#!2/bf8746/7 – bernie

回答

1

我無法得到sqlfiddle接受查詢,但它並接受這一點:

SELECT Name, 'Person' FROM tablea 
UNION 
SELECT Workplace, 'Workplace' FROM tableb 
+0

我認爲在設置變量後您只需要分號。看到我對小提琴的評論。 – bernie

+0

@bernie哎呀,我的屏幕不夠大,不足以顯示有多個「結果」,我不認爲要向下滾動... – Neil

0

使用UNION ALL而不是UNION

SELECT Name, @a FROM tablea 
UNION ALL 
SELECT Workplace, @b FROM tableb 

UNION刪除重複(並在大多數數據庫中對結果進行排序)。

UNION ALL保持選定順序中的所有行。

+1

如果第二列中有不同的數據,則行不會是重複的。 – bernie

相關問題