Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में NOT IN ऑपरेटर से कुछ पंक्तियों को छोड़कर बाकी सभी हटाएं

DELETE ... WHERE column NOT IN (values) से विशिष्ट पंक्तियां रखकर बाकी हटाना

कुछ मानों को संरक्षित करते हुए बाकी सभी पंक्तियों को हटाने के लिए NOT IN क्लॉज उपयोग करें।

सिंटैक्स

DELETE FROM yourTableName
WHERE yourColumnName NOT IN ('value1', 'value2', 'value3', ...);

उदाहरण

CREATE TABLE deleteAllRowsWithCondition (
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    Name VARCHAR(20)
);

INSERT INTO deleteAllRowsWithCondition (Name) VALUES
('Larry'), ('John'), ('Sam'), ('Mike'), ('Carol'), ('Bob'), ('David');

डिलीट क्वेरी: John, Mike, Carol रखें

DELETE FROM deleteAllRowsWithCondition
WHERE Name NOT IN ('John', 'Mike', 'Carol');

परिणाम

Query OK, 4 rows affected (0.15 sec)

सत्यापन

SELECT * FROM deleteAllRowsWithCondition;
+----+-------+
| Id | Name  |
+----+-------+
| 2  | John  |
| 4  | Mike  |
| 5  | Carol |
+----+-------+

महत्वपूर्ण सावधानियां

  • NULL मान: यदि कॉलम में NULL है, तो NOT IN (..., NULL) कभी मेल नहीं खाता (परिणाम UNKNOWN)। समाधान: WHERE (Name NOT IN (...) OR Name IS NULL) या NOT EXISTS उपयोग करें।
  • बड़े टेबल: चरणों में हटाएं (LIMIT 1000 के साथ लूप) लॉक एस्केलेशन और रेप्लिकेशन लैग से बचने के लिए।
  • ट्रांजैक्शन: START TRANSACTION; DELETE ...; -- जांचें; COMMIT/ROLLBACK;
  • विदेशी कुंजी: रेफरेंस करने वाली टेबल पर ON DELETE CASCADE या RESTRICT व्यवहार जांचें।

वैकल्पिक: NOT EXISTS (NULL-सुरक्षित)

DELETE FROM deleteAllRowsWithCondition d
WHERE NOT EXISTS (
    SELECT 1 FROM (SELECT 'John' AS n UNION SELECT 'Mike' UNION SELECT 'Carol') keep
    WHERE keep.n = d.Name
);
  1. - MySQL में DATE() और CURDATE() का उपयोग करके आज की दिनांक को छोड़कर सभी रिकॉर्ड चुनना

    MySQL में DATE() फ़ंक्शन और CURDATE() का उपयोग करके DATETIME कॉलम से केवल दिनांक भाग की तुलना करके आज की दिनांक वाले रिकॉर्ड को बाहर करें। उदाहरण: टेबल बनाना और डेटा डालना mysql> CREATE TABLE DemoTable ( -> Name VARCHAR(100), -> DueDate DATETIME -> ); Query OK, 0 rows affec

  1. - MySQL में एक क्वेरी से एकाधिक पंक्तियां कैसे प्राप्त करें

    IN() ऑपरेटर के साथ एकाधिक ID वाली पंक्तियां चुनना एक ही क्वेरी में कई विशिष्ट ID वाली पंक्तियां प्राप्त करने के लिए WHERE id IN (val1, val2, ...) का उपयोग करें। टेबल और डेटा CREATE TABLE DemoTable ( Id INT, Name VARCHAR(100) ); Query OK, 0 rows affected (0.60 sec) INSERT INTO DemoTable V

  1. - एकल MySQL क्वेरी में एकाधिक पंक्तियां कैसे प्राप्त करें

    LIKE ऑपरेटर का उपयोग करके पैटर्न मिलान के साथ एकाधिक पंक्तियां प्राप्त करना एकल MySQL क्वेरी में एकाधिक पंक्तियां प्राप्त करने के लिए LIKE ऑपरेटर का उपयोग करें। पहले टेबल बनाएं: create table DemoTable1385 ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, Name varchar(20) ); Query OK, 0 rows affected (0