MySQL में DELETE स्टेटमेंट के साथ NOT IN ऑपरेटर का उपयोग करके आप उन पंक्तियों को हटा सकते हैं जो दी गई सूची में नहीं हैं। यह विशिष्ट रिकॉर्ड रखते हुए बाकी हटाने के लिए उपयोगी है।
टेबल बनाएं और डेटा डालें
mysql> CREATE TABLE DemoTable1830 (
StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
StudentName VARCHAR(20)
) AUTO_INCREMENT=101;
mysql> INSERT INTO DemoTable1830(StudentName) VALUES('Chris');
mysql> INSERT INTO DemoTable1830(StudentName) VALUES('David');
mysql> INSERT INTO DemoTable1830(StudentName) VALUES('Mike');
mysql> INSERT INTO DemoTable1830(StudentName) VALUES('Sam');
mysql> INSERT INTO DemoTable1830(StudentName) VALUES('Bob');
वर्तमान डेटा
+-----------+-------------+ | StudentId | StudentName | +-----------+-------------+ | 101 | Chris | | 102 | David | | 103 | Mike | | 104 | Sam | | 105 | Bob | +-----------+-------------+
विशिष्ट आईडी को छोड़कर बाकी हटाएं
केवल 101, 103, 105 रखें:
mysql> DELETE FROM DemoTable1830
WHERE StudentId NOT IN(101, 103, 105);
Query OK, 2 rows affected (0.00 sec)
परिणाम
+-----------+-------------+ | StudentId | StudentName | +-----------+-------------+ | 101 | Chris | | 103 | Mike | | 105 | Bob | +-----------+-------------+
सावधानियां
NOT INसूची मेंNULLहोने पर कोई पंक्ति नहीं हटेगी (क्योंकिNULLतुलना अज्ञात देती है)।- पहले
SELECTसे जांच लें:SELECT * FROM table WHERE id NOT IN(...) - बड़े डेटासेट पर
NOT INधीमा हो सकता है;NOT EXISTSयाLEFT JOIN ... IS NULLबेहतर हो सकते हैं।