我需要從OldTable中找到所有不存在於NewTable中的ID
爲什麼這個查詢不能找到id?在一個簡單的SQL查詢中出現「NOT IN」問題
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)
'SELECT ID FROM NewTable'可能返回一個'NULL'。這將意味着你的查詢不會返回任何結果。 –
是兩列的數據類型完全相同..你是否缺少演員或者可能是一些小格式的調整? – gordatron
子查詢不返回任何空值。這兩個表都在ID列上設置了NOT NULL – Niklas