从一个查询开始,它只返回那些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 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
在您希望数据库引擎清除重复行时使用。但是,在这种情况下,这不是必需的......除非重复项分别存在于一个或两个表中。