У меня есть две таблицы SQL Server:
Таблица 1
Id name description version
----------------------------------
1 Book1 Book 1 Title v1
2 Book2 Book 2 Title v2
3 Book3 Book 3 Title NULL
4 Book5 Book 5 Title v3
Таблица 2
Id name description version
----------------------------------
1 Book1 Book 1 Title v1
2 Book2 Book 2 Title v2
3 Book3 Book 3 Title NULL
4 Book4 Book 4 Title NULL
5 Book5 Book 5 Title NULL
Я хочу выбрать все данные из таблицы 2, которых нет в таблице 1, чтобы я мог вставить их в другую таблицу.
Вот SQL-запрос:
SELECT t2.name, t2.description, t2.version
FROM Table2 AS t2
WHERE
NOT EXISTS (SELECT t1.name, t1.description, t1.version
FROM Table1 as t1
WHERE t2.name = t1.name
AND t2.description = t1.description
AND t2.version = t1.version)
Ожидаемый результат таков:
Id name description version
-----------------------------------
4 Book4 Book 4 Title NULL
5 Book5 Book 5 Title NULL
Но вместо этого я получаю это:
Id name description version
---------------------------------
3 Book3 Book 3 Title NULL
4 Book4 Book 4 Title NULL
Почему нулевое значение не оценивается в моем выражении NOT EXIST
и отображается?
FALSE
. Вам нужно будет использоватьINSULL()
для обработки - person Squirrel   schedule 27.08.2018NULL = NULL
ложно. Иметь первичный ключ проще. Также проверьте ОБНОВЛЕНИЕ. - person qxg   schedule 27.08.2018