2013-11-26 180 views
0

我一直在試圖從兩個表中同時選擇所有內容。從兩個表中選擇所有行

不幸的是,我沒有創建數據庫,我不能將它合併到一個表中。

我嘗試這樣做,但它不工作: (SELECT * FROM 'contacts') UNION (SELECT * FROM 'signup')

兩個表是相同的。這不,雖然工作:(

+0

它爲什麼不起作用?它是否給出了一個錯誤,說您在兩個查詢中都沒有選擇相同數量的字段? – Linger

+0

向我們展示表結構以查看可能缺少的內容。不要忘記添加列數據類型。 –

+3

永遠不要在'UNION'查詢中選擇*'。即使你相信它們是相同的,也要明確每個「SELECT」列表中列的順序。 –

回答

1

你就不能這樣做:

SELECT * FROM contacts, signup; 

還是我不理解你的問題

編輯:

相反,如果你試試這個」重新尋找聯盟:

SELECT * FROM contacts 
UNION 
SELECT * FROM signup; 
+0

啊哈!這有效,但我得到每一行的重複。 –

+0

不,這是一個不同的輸出。這導致了一個笛卡爾積 - 所有的'contacts'行都乘以'signup'的所有行。 –

+0

@Neurofluxation不要使用它,因爲它不是連接兩個表的正確方法。即使您添加了「DISTINCT」來重複刪除行,這是一個連接查詢,而不是您顯然要查找的聯盟。 –

1

您的語法不正確。表不應該用撇號引用。他們可以(但不一定是)反引號引用。

SELECT columns FROM contacts UNION SELECT columns FROM signup 

columns替換爲您要選擇的列。另請注意,這將首先選擇全部行中的contacts行,然後再選擇signup行。