我是 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/

10-13 22:51