Я пытаюсь сравнить две таблицы SQL Server, чтобы проверить некоторые данные. Я хочу вернуть все строки из обеих таблиц, где данные находятся в одной или другой. По сути, я хочу показать все несоответствия. При этом мне нужно проверить три фрагмента данных: FirstName, LastName и Product.
Я довольно новичок в SQL, и кажется, что многие решения, которые я нахожу, связаны со сложными вещами. Мне не нужно беспокоиться о NULL.
Я начал с того, что попробовал что-то вроде этого:
SELECT DISTINCT [First Name], [Last Name], [Product Name] FROM [Temp Test Data]
WHERE ([First Name] NOT IN (SELECT [First Name]
FROM [Real Data]))
У меня проблемы с дальнейшим продвижением.
Спасибо!
EDIT:
Основываясь на ответе @treaschf, я пытался использовать вариант следующего запроса:
SELECT td.[First Name], td.[Last Name], td.[Product Name]
FROM [Temp Test Data] td FULL OUTER JOIN [Data] AS d
ON td.[First Name] = d.[First Name] AND td.[Last Name] = d.[Last Name]
WHERE (d.[First Name] = NULL) AND (d.[Last Name] = NULL)
Но я продолжаю получать 0 результатов назад, когда я знаю, что есть по крайней мере 1 строка в td, которой нет в d.
EDIT:
Хорошо, думаю, я понял это. По крайней мере, за несколько минут тестирования он, кажется, работает достаточно хорошо.
SELECT [First Name], [Last Name]
FROM [Temp Test Data] AS td
WHERE (NOT EXISTS
(SELECT [First Name], [Last Name]
FROM [Data] AS d
WHERE ([First Name] = td.[First Name]) OR ([Last Name] = td.[Last Name])))
Это в основном скажет мне, что находится в моих тестовых данных, а не в моих реальных данных. Что вполне подходит для того, что мне нужно сделать.