[英]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的查詢中有一些無關的項目:
不需要GROUP BY
來展平結果,因為UNION
在選擇所有列時自然會這樣做。
同樣,也不需要HAVING
。
MySQL將忽略UNION SELECT
查詢中的列別名,因為第一個SELECT
列表確定結果的列名。 您對UNION
只是(a)所有SELECT
語句中的列數相同,以及(b)相應列的兼容數據類型 - 相同或隱式可轉換。
也不需要括號,但如果它使查詢對您更具可讀性,則應包括它們。
所以你真正需要的是以下內容:
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.