2015-08-24 5 views
1

Это мой первый пост здесь.MySQL - записи, которые не существуют в другой таблице - показаны неверные результаты

Я пытаюсь отобразить записи из одной таблицы в другую, где они еще не существуют, используя внешнее соединение.

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 имеет значение null, хотя я не знаю почему.

В таблице «new_person» есть только 2 записи, которые не существуют в таблице «человек», но когда я запускаю этот запрос дает мне 111 записей.

Однако, если я удаляю zipcode из предложения join, он показывает мне правильный результат из 2 записей.

Любая помощь будет оценена по достоинству.

ответ

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); 

(OR), даже используя 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; 

Опять же, я вижу, что вы присоединяетесь на всех колонках. Не знаете почему? Существуют ли какие-либо отношения между таблицами? Если да, тогда попробуйте присоединиться к этому связанному столбцу.