SQL - 从两个表中获取所有结果

时间:2018-04-25 15:04:09

标签: sql

对不起,我是新手,所以这可能是一个非常基本的问题!!

我有两张表,其中包含一些重叠数据。

表1包含 customer_name customer_address 国家/地区性别以及许多其他列。

表2还包含 customer_name customer_address ,但与表一有不同的数据。表2还有其他我想忽略的列。

我想提取所有 customer_name customer_address '从表1和表2开始,以及表1中的国家性别,并将它们放在另一个表中。

如果有人有任何建议,我真的很感激听到他们!

1 个答案:

答案 0 :(得分:1)

我想你想要一个UNION

SELECT customer_name, customer_address, country, gender
FROM table1
UNION
SELECT customer_name, customer_address, '', ''
FROM table2

请注意,UNION会删除重复的行,以创建一个不同的结果集。

如果您想要两个表中的所有行,即使存在重复项,也请使用UNION ALL代替。

修改:仅显示不在table2

中的table1个客户/地址

有很多方法,但我喜欢NOT EXISTS()

SELECT customer_name, customer_address, country, gender
FROM table1
UNION
SELECT customer_name, customer_address, '', ''
FROM table2 t2
WHERE NOT EXISTS (SELECT *
                  FROM table1 t1
                  WHERE t1.customer_name = t2.customer_name
                  AND t1.customer_address = t2.customer_address)