我的数据库中有2个表,我需要检查这个表是否在其中一个表中。我有一个表存储firstName,lastName,地址,城市,州,zip样本。然后有一个客户表也有此信息。我需要做的是弄清楚样品中的人没有成为顾客。我没有关于如何为此运行查询的第一个线索,因为我尝试了多个连接以及什么都无济于事。任何帮助,找出如何找出人们没有成为客户的样本将是有帮助的。谢谢。
答案 0 :(得分:2)
这会尝试根据姓名和地址来匹配此人(地址已注释掉,或根据需要添加城市,邮政编码,状态)。
如果联接不成功,则意味着该人永远不会成为客户(至少不是相同的名/姓) - 这是使用c.firstname IS NULL
条件进行测试的
select p.*
from person p
left join customer c on
on p.firstname = c.firstname
and p.lastname = c.lastname
#and p.address = c.address
where c.firstname is null
答案 1 :(得分:0)
SELECT * FROM `tableA` LEFT JOIN `customers` ON `tableA`.`id`=`customers`.`id` WHERE `customers`.`id` IS NULL
它应该有效,因为当你离开连接时,它会从两个表中获取所有记录并连接它们。如果没有第二个表的记录,它将用null替换列;因此,如果他们不是客户,则列为空。
答案 2 :(得分:0)
SELECT s.*
FROM samples s
WHERE NOT EXISTS(SELECT NULL
FROM customers c
WHERE s.firstName = c.firstName
AND s.lastName = c.lastName
AND s.address = c.address
AND s.city = c.city
AND s.state = c.state
AND s.zip = c.zip)