我在Access数据库中有两个表 . Table1的列数多于Table2 . 我想将这些表合并为一个,同时删除重复项 . 我有以下查询
SELECT FirstName, LastName, PhoneNumber FROM Table1
UNION
SELECT FirstName, LastName, Null as PhoneNumber FROM Table2
问题是,我不想复制Table2中Table1中具有相同FirstName和LastName的任何条目 . 如何更改上述查询才能完成?提前致谢 .
3 回答
从查询开始,该查询仅返回
Table1
中未匹配的Table2
行 .然后在
UNION
查询中使用SELECT
.注意我使用
UNION ALL
因为它需要较少的db引擎工作,所以因此更快 . 当您希望db引擎清除重复行时,只使用UNION
. 但是,在这种情况下,这是不必要的......除非在这些表中的一个或两个中单独存在重复项 .尝试约束如下:
FaddishWorm有一个很好的概念,但是两个独立的子查询将消除匹配firstname或匹配lastname的任何记录 . NOT x AND NOT y = NOT(x OR y) . 因此,表2中将省略Hernandez和Jim等名称 .
尝试连接 .
还有其他解决方案 . 这很慢 . HandsUp有正确的想法 .