Мне нужно найти все идентификаторы из OldTable, которых нет в NewTable
Почему этот запрос не найдет идентификатор?
SELECT old_id FROM OldTable WHERE old_id NOT IN (
SELECT id FROM NewTable)
Они сами возвращают это
--Returns the id 18571
SELECT old_id FROM OldTable WHERE old_id = 18571
--Returns nothing
SELECT id FROM NewTable WHERE id = 18571
Я что-то упускаю здесь очевидное?
Оба столбца имеют тип int
и первичные ключи.
РЕШЕНО
В столбце id были нулевые значения, я просто не знал = /
Эти работы:
SELECT old_id FROM OldTable EXCEPT SELECT id FROM NewTable
SELECT * FROM old_table ot WHERE NOT EXISTS (
SELECT * FROM new_table nt WHERE nt.id = ot.old_id)
Это не работает:
SELECT old_id FROM OldTable LEFT JOIN NewTable ON old_id = id WHERE id IS NULL
SELECT old_id FROM OldTable WHERE old_id NOT IN (
SELECT id FROM NewTable)