MySQL में DELETE स्टेटमेंट के WHERE क्लॉज का उपयोग करके शर्त के आधार पर केवल विशिष्ट पंक्तियों को हटाया जा सकता है।
सिंटैक्स
DELETE FROM table_name WHERE condition;
उदाहरण
तालिका बनाएं:
mysql> CREATE TABLE DemoTable (Id INT, Name VARCHAR(20));
mysql> INSERT INTO DemoTable VALUES (100, 'Bob'), (101, 'Chris'), (102, 'David'), (103, 'Sam'), (104, 'Carol');
हटाने से पहले
+------+-------+
| Id | Name |
+------+-------+
| 100 | Bob |
| 101 | Chris |
| 102 | David |
| 103 | Sam |
| 104 | Carol |
+------+-------+
क्वेरी: Id > 102 वाली पंक्तियां हटाएं
mysql> DELETE FROM DemoTable WHERE Id > 102;
हटाने के बाद
+------+-------+
| Id | Name |
+------+-------+
| 100 | Bob |
| 101 | Chris |
| 102 | David |
+------+-------+
सुरक्षित पैटर्न
- पहले SELECT:
SELECT * FROM DemoTable WHERE Id > 102; - LIMIT जोड़ें:
DELETE FROM DemoTable WHERE Id > 102 LIMIT 2; - ट्रांजैक्शन:
START TRANSACTION; DELETE ...; COMMIT;
सामान्य शर्तें
| शर्त | उदाहरण |
|---|---|
| रेंज | WHERE Id BETWEEN 100 AND 200 |
| सूची | WHERE Id IN (1, 5, 10) |
| पैटर्न | WHERE Name LIKE 'A%' |
| NULL | WHERE Email IS NULL |
| दिनांक | WHERE CreatedAt < '2020-01-01' |
चेतावनी
DELETE FROM table_name (बिना WHERE) सभी डेटा हटा देता है। हमेशा WHERE क्लॉज उपयोग करें और बैकअप रखें।
बड़े डिलीट के लिए
-- बैच में हटाएं (लॉक/लॉग कम करने के लिए)
DELETE FROM DemoTable WHERE Id > 102 LIMIT 1000;
-- दोहराएं जब तक प्रभावित पंक्तियां 0 न हों