我在Access数据库中有两个表。表1的列多于表2。我想将这些表合并为一个,同时删除重复项。我有以下查询
SELECT FirstName, LastName, PhoneNumber FROM Table1 UNION SELECT FirstName, LastName, Null as PhoneNumber FROM Table2
问题是,我不想从Table2复制任何在Table1中具有相同的FirstName和LastName的条目。如何更改以上查询以完成此操作?提前致谢。
从查询开始,该查询仅返回Table2在中不匹配的行Table1。
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;
然后SELECT在UNION查询中使用它。
SELECT
UNION
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在您希望数据库引擎清除重复的行时使用。但是,在这种情况下,这将不是必需的……除非这些表中的一个或两个表中分别存在重复项。
UNION ALL