MySQL में एक से अधिक शर्तों (कॉलम = मान) के आधार पर पंक्तियाँ हटाने के लिए DELETE स्टेटमेंट में WHERE क्लॉज के साथ AND ऑपरेटर का उपयोग करें।
सिंटैक्स
DELETE FROM table_name WHERE column1 = value1 AND column2 = value2;
व्यावहारिक उदाहरण
1. टेबल बनाएं और डेटा डालें
mysql> CREATE TABLE DemoTable722 (
StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
StudentName VARCHAR(100),
StudentAge INT
);
Query OK, 0 rows affected (1.84 sec)
mysql> INSERT INTO DemoTable722 (StudentName, StudentAge) VALUES
('Chris Brown', 23),
('John Smith', 21),
('David Miller', 22),
('Adam Smith', 20),
('Carol Taylor', 24);
Query OK, 5 rows affected (0.25 sec)
2. सभी रिकॉर्ड्स देखें
mysql> SELECT * FROM DemoTable722; +-----------+--------------+------------+ | StudentId | StudentName | StudentAge | +-----------+--------------+------------+ | 1 | Chris Brown | 23 | | 2 | John Smith | 21 | | 3 | David Miller | 22 | | 4 | Adam Smith | 20 | | 5 | Carol Taylor | 24 | +-----------+------------+------------+ 5 rows in set (0.00 sec)
3. दो शर्तों के साथ DELETE
mysql> DELETE FROM DemoTable722 WHERE StudentId = 3 AND StudentName = 'David Miller'; Query OK, 1 row affected (0.21 sec)
4. परिणाम जांचें
mysql> SELECT * FROM DemoTable722; +-----------+--------------+------------+ | StudentId | StudentName | StudentAge | +-----------+--------------+------------+ | 1 | Chris Brown | 23 | | 2 | John Smith | 21 | | 4 | Adam Smith | 20 | | 5 | Carol Taylor | 24 | +-----------+--------------+------------+ 4 rows in set (0.00 sec)
महत्वपूर्ण सुरक्षा अभ्यास
हमेशा WHERE क्लॉज का उपयोग करें
-- खतरनाक: सभी पंक्तियाँ हटा देगा! DELETE FROM DemoTable722; -- सुरक्षित: विशिष्ट शर्तों के साथ DELETE FROM DemoTable722 WHERE StudentId = 3;
पहले SELECT से सत्यापित करें
SELECT * FROM DemoTable722 WHERE StudentId = 3 AND StudentName = 'David Miller'; -- यदि सही पंक्ति लौटती है, तो DELETE चलाएं
एकाधिक शर्तों के पैटर्न
| आवश्यकता | WHERE क्लॉज |
|---|---|
| सभी शर्तें पूरी हों (AND) | WHERE col1 = 1 AND col2 = 'A' AND col3 > 100 |
| कोई एक शर्त पूरी हो (OR) | WHERE col1 = 1 OR col2 = 'A' |
| मिश्रित (परेंथीसिस के साथ) | WHERE (col1 = 1 OR col1 = 2) AND col2 = 'A' |
| सूची में मान | WHERE col1 IN (1,2,3) AND col2 = 'A' |
| रेंज | WHERE col1 BETWEEN 10 AND 20 AND col2 = 'A' |
बड़े डिलीट के लिए चंकिंग
-- लाखों पंक्तियाँ हटाने के लिए बैच में DELETE FROM large_table WHERE created_at < '2020-01-01' LIMIT 10000; -- दोहराएं जब तक 0 पंक्तियाँ प्रभावित न हों