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)

Проблема в том, что когда я тестировал этот запрос, он по-прежнему показывает мне записи, которые ДЕЙСТВИТЕЛЬНО существуют. Я считаю, что это связано с нулевым почтовым индексом, хотя я не знаю, почему.

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

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

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


person speaker    schedule 24.08.2015    source источник


Ответы (1)


Вы можете попробовать использовать 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;

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

person Rahul    schedule 24.08.2015