我如何加入表a
和表b
並獲得每個記錄?不是真正的加入...不知道這是什麼。加入兩個不同的表?
所以,如果我有a
3記錄和b
5記錄,我想要回8條記錄。
在a
的記錄中,所有b
字段都可以爲空。在b
的記錄中,所有a
字段都可以爲空。
編輯:我的表有不同的字段。
Error Code: 1222. The used SELECT statements have a different number of columns
我如何加入表a
和表b
並獲得每個記錄?不是真正的加入...不知道這是什麼。加入兩個不同的表?
所以,如果我有a
3記錄和b
5記錄,我想要回8條記錄。
在a
的記錄中,所有b
字段都可以爲空。在b
的記錄中,所有a
字段都可以爲空。
編輯:我的表有不同的字段。
Error Code: 1222. The used SELECT statements have a different number of columns
像mentionned別人,你需要一個工會
SELECT intColumn, varcharColumn, intColumn FROM a
UNION
SELECT intColumn, varcharColumn, 0 FROM b
但是你必須具有相同數量的列,並且它們也必須具有相似的數據類型。
Here's一個很好的教程吧
另外,如果你想不在兩個表中的列,您可以用null或常量填寫。
我可以通過選擇空值來匹配我的列嗎? 'SELECT NULL as field_that_this_table_doesnt_have' –
是的,你可以,我更新了我的答案。您可以在選擇中添加常量。我沒有MySQL,但它在sql server 2010中工作,我只是試過。 – Marc
你想要一個UNION
:
SELECT something FROM a
UNION
SELECT something FROM b
使用'UNION ALL'確保在表中包含相同的值時不會刪除重複項。 –
試試這個
SELECT * FROM a
LEFT JOIN b ON a.id1 = b.id2
UNION
SELECT * FROM a
RIGHT JOIN b ON a.id1 = b.id2
只要確保,A和B具有不同的ID
您還可以使用其它一些其他的領域則id
不屬於相同的兩個表
編輯:更新小提琴
sqlfiddle?太好了,謝謝。 –
錯誤是因爲您的兩個select都沒有相同的列。他們必須是相同的類型和順序。 – Marc