Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

उन पंक्तियों को हटाने का सुरुचिपूर्ण तरीका जो अन्य तालिका द्वारा संदर्भित नहीं हैं

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
       )


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर में ऑब्जेक्ट का नाम उसके ऑब्जेक्ट_आईडी से प्राप्त करने के लिए OBJECT_NAME() का उपयोग करें

  2. गतिशील आदेश दिशा

  3. SQL सर्वर में शीर्ष के साथ संबंधों का उपयोग कैसे करें - SQL सर्वर / TSQL ट्यूटोरियल भाग 114

  4. SQL सर्वर में FILEGROUPPROPERTY () का उपयोग कैसे करें

  5. SQL में सभी संयोजन उत्पन्न करें