簡體   English   中英

簡單的SQL操作 - 連接兩個具有相同列且沒有主鍵/外鍵的表

[英]Simple SQL operation - Joining two tables with identical columns and no primary/foreign keys

我有兩個相同(6)列和不同條目的表。 我想獲得一個具有相同列的“主”表,包括表A和表B中的每個唯一條目。兩個表上都沒有主鍵或外鍵,並且條目的“唯一性”由每個表確定。 6個字段與另一個條目相同。 換句話說,如果條目x的列1等於條目y的列1,並且所有其余列也相等,則這兩個條目被認為是非唯一的,無論它們是存在於同一個表中還是存在於單獨的表中。 我已經研究並找到了類似的解決方案,但沒有一個能夠解決這個問題。 有什么想法嗎?

你可以使用union語句:

(
    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

UNION絕對是這里所需要的,但是來自@PhilCross的查詢中有一些無關的項目:

  1. 不需要GROUP BY來展平結果,因為UNION在選擇所有列時自然會這樣做。

  2. 同樣,也不需要HAVING

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

  4. 也不需要括號,但如果它使查詢對您更具可讀性,則應包括它們。

所以你真正需要的是以下內容:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM