not in
. के लिए एक कुख्यात गोचा है . मूल रूप से, id not in (1,2,3)
इसके लिए आशुलिपि है:
id <> 1 and id <> 2 and id <> 3
अब अगर आपका TimeEntries
तालिका में TaskID
. के साथ कोई भी पंक्ति होती है का null
, not in
में अनुवाद करता है:
ID <> null and ID <> 1 and ID <> 2 AND ...
null
. के साथ तुलना का नतीजा हमेशा unknown
होता है . चूंकि unknown
SQL में सत्य नहीं है, where
क्लॉज सभी पंक्तियों को फ़िल्टर करता है, और आप अंत में कुछ भी नहीं हटाते हैं।
सबक्वेरी में एक आसान समाधान एक अतिरिक्त है जहां क्लॉज:
DELETE FROM Tasks
WHERE ID not IN
(
SELECT TaskID
FROM TimeEntries
WHERE TaskID is not null
)