Я пытаюсь сравнить две таблицы, 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])))
Это, в основном, будет рассказывать мне, что в моих тестовых данных, которых нет в моих реальных данных. Что совершенно нормально для того, что мне нужно делать.