use*_*157 2 sql union ms-access duplicates ms-access-2010
我在Access数据库中有两个表.Table1的列数多于Table2.我想将这些表合并为一个,同时删除重复项.我有以下查询
SELECT FirstName, LastName, PhoneNumber FROM Table1
UNION
SELECT FirstName, LastName, Null as PhoneNumber FROM Table2
Run Code Online (Sandbox Code Playgroud)
问题是,我不想复制Table2中Table1中具有相同FirstName和LastName的任何条目.如何更改上述查询才能完成?提前致谢.
从查询开始,该查询仅返回那些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;
Run Code Online (Sandbox Code Playgroud)
然后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;
Run Code Online (Sandbox Code Playgroud)
注意我使用的UNION ALL是因为它需要较少的db引擎工作,因此更快.刚刚使用UNION的时候你想要的数据库引擎剔除掉重复行.但是,在这种情况下,这是不必要的......除非在这些表中的一个或两个中单独存在重复项.
| 归档时间: |
|
| 查看次数: |
36220 次 |
| 最近记录: |