小编典典

如何在删除重复项的同时合并具有不同列号的两个表?

sql

我在Access数据库中有两个表。表1的列多于表2。我想将这些表合并为一个,同时删除重复项。我有以下查询

SELECT FirstName, LastName, PhoneNumber FROM Table1
UNION
SELECT FirstName, LastName, Null as PhoneNumber  FROM Table2

问题是,我不想从Table2复制任何在Table1中具有相同的FirstName和LastName的条目。如何更改以上查询以完成此操作?提前致谢。


阅读 159

收藏
2021-03-17

共1个答案

小编典典

从查询开始,该查询仅返回Table2在中不匹配的行Table1

SELECT t2.FirstName, t2.LastName
FROM
    Table2 AS t2
    LEFT JOIN Table1 AS t1
    ON 
            t2.FirstName = t1.FirstName
        AND t2.LastName = t1.LastName
WHERE t1.FirstName Is Null;

然后SELECTUNION查询中使用它。

SELECT FirstName, LastName, PhoneNumber FROM Table1
UNION ALL
SELECT t2.FirstName, t2.LastName, t2.Null AS PhoneNumber
FROM
    Table2 AS t2
    LEFT JOIN Table1 AS t1
    ON 
            t2.FirstName = t1.FirstName
        AND t2.LastName = t1.LastName
WHERE t1.FirstName Is Null;

请注意,我UNION ALL之所以使用它,是因为它需要db引擎进行的工作较少,因此速度更快。仅UNION在您希望数据库引擎清除重复的行时使用。但是,在这种情况下,这将不是必需的……除非这些表中的一个或两个表中分别存在重复项。

2021-03-17