我是 SQL 新手,还无法正确执行此 SQL 查询。我目前有:
SELECT * FROM tableA
LEFT OUTER JOIN tableB
ON tableA.`full_name` = tableB.`full_name`
WHERE tableB.`id` IS NULL
两个表都有人员记录,包括姓名和地址。我需要获取 tableA 中那些人的所有记录,而不是 tableB。下图基本上是我需要的:
问题是两个人可能有相同的名字,但地址不同。所以最终,我需要获取 tableA 中所有人的记录,不包括具有重复名称和地址的重复项。
每个表都有如下列:
id,full_name,first_name,last_name,title,phone,address,city,state,postal_code
最佳答案
以下查询将根据全名和地址为您提供 tableA 中不在 tableB 中的人员的所有 id:
SELECT tableA.id FROM tableA
LEFT OUTER JOIN tableB
-- people are the same if fullname and adress match
ON tableA.`full_name` = tableB.`full_name`
AND tableA.adress = tableB.adress
-- filter people that re in tableA only
WHERE tableB.`id` IS NULL
-- filter duplicates
GROUP BY tableA.id
您可以轻松编辑此 selet 以包含您需要的 tableA 中的任何信息。
关于mysql - 从表 A 中获取不在表 B 中的记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16844206/