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

रिकॉर्ड्स को कैसे डिलीट करें NOT IN

मैं धारणाओं के साथ शुरुआत करना चाहूंगा।

  1. आपके पास एक श्रृंखला जैसा डेटा मॉडल है:परियोजनाएं --* ProjectSchemes --* योजनाएं
  2. आपका लक्ष्य केवल वैध शृंखला रखना है, इसलिए परियोजना के बिना कोई परियोजना योजना नहीं, परियोजना योजना के बिना कोई योजना नहीं है।
  3. NULL आपकी किसी एक आईडी के लिए मान्य मान नहीं है।
  4. सभी आईडी अपनी तालिका में अद्वितीय हैं
  5. आप अपने डेटाबेस के संदर्भात्मक अखंडता तंत्र का उपयोग नहीं करते हैं

परिणामस्वरूप आपका चयन योजना तालिका में सभी योजनाओं के लिए योजना_आईडी सूचीबद्ध करेगा।

कहा कि, आपको संबंधित प्रोजेक्ट के बिना सभी ProjectSchemes को हटाना शुरू कर देना चाहिए। ये ProjectSchemes हैं जिनमें NULL या एक आईडी है जो प्रोजेक्ट तालिका में मौजूद नहीं है:

DELETE ProjectSchemes WHERE (Project_Id is NULL) OR 
(NOT EXISTS (SELECT * FROM Projects WHERE
             Projects.Project_Id = ProjectSchemes.Project_Id))

प्रोजेक्ट्स के बिना प्रोजेक्ट्स को हटाने के बाद अब हमारे पास स्कीम टेबल में कुछ नए अनाथ हो सकते हैं। अगली बात अब उन सभी योजनाओं को हटाना है जिनके पास NULL की एक आईडी है या एक आईडी है जो ProjectSchemes तालिका में मौजूद नहीं है:

DELETE Schemes WHERE (Scheme_Id is NULL) OR 
(NOT EXISTS (SELECT * FROM ProjectSchemes WHERE
             ProjectSchemes.Scheme_Id = Schemes.Scheme_Id))

अभी भी ऐसी योजनाएँ होने का मौका है जो ProjectSchemes को हटाए बिना किसी परियोजना से जुड़ी नहीं हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मैपिंग अपवाद Edm.String SqlServer.varbinary के साथ संगत नहीं है

  2. सभी बाधाओं की स्क्रिप्ट कैसे उत्पन्न करें

  3. दो गिनती प्राप्त करना और फिर उन्हें विभाजित करना

  4. टी-एसक्यूएल में हैमिंग वजन/जनसंख्या गिनती

  5. यूएस पोस्टल (ज़िप) कोड के लिए बाउंडिंग निर्देशांक कैसे प्राप्त करें?