2013-05-28 41 views
0

我有兩個具有相同(6)列和不同條目的表。我希望獲得具有相同列的「主」表,其中包括表A和B中的每個唯一條目。每個表上不存在主鍵或外鍵,並且條目的「唯一性」由每個表6個字段與另一個條目相同。換句話說,如果條目x的列1等於條目y的列1,並且所有其餘的列也相同,則這兩個條目被認爲是非唯一的,無論它們是存在於同一個表中還是存在於不同的表中。我研究並找到了類似的解決方案,但都沒有解決這個問題。有什麼想法嗎?簡單的SQL操作 - 連接兩個具有相同列且沒有主鍵/外鍵的表

回答

1

一個UNION肯定這裏的需要是什麼,但也有在查詢一些無關物品從@PhilCross:

  1. GROUP BY不需要平坦化結果,因爲UNION在所有列上進行選擇時自然會這樣做。

  2. 同樣,HAVING也不需要。

  3. MySQL中會忽略UNION SELECT查詢中的列別名,因爲第一個SELECT列表確定結果的列名。 (a)所有SELECT語句中的相同列數和(b)相應列的兼容數據類型 - 可以是相同的也可以是隱式可轉換的。

  4. 圓括號也不是必需的,但是如果它使得查詢更易讀,那麼應該包含它們。

所以,你真正需要的是這樣的:

SELECT column1 AS column1, column2 AS column2, column3 AS column3 
FROM table1 
UNION SELECT column1, column2, column3 
FROM table2 
+0

謝謝你澄清以前的答案,我相信我會一起去。 – user2429042

+0

+1,有趣的讀:) –

1

您可以只使用一個聯合聲明:

(
    SELECT column1 AS column1, column2 AS column2, column3 AS column3 
    FROM table1 
) UNION (
    SELECT column1 AS column1, column2 AS column2, column3 AS column3 
    FROM table2 
) 
GROUP BY column1, column2, column3 
HAVING COUNT(column1, column2, column3)>0 
+0

謝謝您的回覆! – user2429042

相關問題