MySQL - 另一个表中不存在的记录 - 显示不正确的结果

时间:2015-08-24 17:48:57

标签: mysql join insert records

这是我在这里的第一篇文章。

我正在尝试使用外部联接将一个表中的记录显示到另一个表中它们尚不存在。

SELECT a.fname,a.lname,a.dob_month,a.dob_year
FROM new_person a LEFT JOIN person b
USING (fname,enter code herelname,dob_month,dob_day,dob_year,gender,zipcode)
WHERE (b.fname is null and b.lname is null and b.dob_year is null and b.dob_month is null)

问题是,当我测试这个查询时,它仍然显示我存在的记录。我认为它与zipcode为空有关,虽然我不知道为什么..

“new_person”表只有2个记录在“person”表中不存在,但是当我运行此查询时,它给出了111条记录。

但是,如果我从join子句中删除了zipcode,它会向我显示2条记录的正确结果。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

您可以尝试使用EXISTS之类的

SELECT a.fname,
a.lname,
a.dob_month,
a.dob_year
FROM new_person a 
WHERE NOT EXISTS (
SELECT 1 FROM person WHERE fname <> a.fname);

(或)甚至使用LEFT JOIN您已尝试的内容

SELECT a.fname,
a.lname,
a.dob_month,
a.dob_year
FROM new_person a 
LEFT JOIN person b ON a.fname = b.fname
WHERE b.fname is null;

再次,我看到你正在加入所有列。不知道为什么?表之间是否存在任何关系?如果是这样,那么请尝试加入相关的列。