ORDER BY DESC LIMIT 1 से अधिकतम ID वाली पंक्ति हटाएं
टेबल में सबसे बड़ी ID वाली एकल पंक्ति को हटाने के लिए DELETE ... ORDER BY ... DESC LIMIT 1 का उपयोग करें।
टेबल और डेटा
mysql> CREATE TABLE DemoTable (UserId INT, UserName VARCHAR(20));
mysql> INSERT INTO DemoTable VALUES(100,'John'), (234,'Mike'), (145,'Sam'), (278,'Carol'), (289,'David'), (277,'Bob');
मूल डेटा
mysql> SELECT * FROM DemoTable;
+--------+----------+
| UserId | UserName |
+--------+----------+
| 100 | John |
| 234 | Mike |
| 145 | Sam |
| 278 | Carol |
| 289 | David |
| 277 | Bob |
+--------+----------+
हटाने की क्वेरी
mysql> DELETE FROM DemoTable ORDER BY UserId DESC LIMIT 1;
Query OK, 1 row affected (0.15 sec)
परिणाम (ID 289 हटाया गया)
mysql> SELECT * FROM DemoTable;
+--------+----------+
| UserId | UserName |
+--------+----------+
| 100 | John |
| 234 | Mike |
| 145 | Sam |
| 278 | Carol |
| 277 | Bob |
+--------+----------+
कैसे काम करता है
ORDER BY UserId DESC- ID के अवरोही क्रम में सॉर्ट करता हैLIMIT 1- केवल पहली पंक्ति (सबसे बड़ी ID) को प्रभावित करता है
सावधानियां
ORDER BY ... LIMITके साथDELETEMySQL-विशिष्ट है- ट्रांजैक्शन में उपयोग करें यदि रोलबैक आवश्यक हो
- विदेशी कुंजी प्रतिबंध होने पर संबंधित पंक्तियाँ भी प्रभावित हो सकती हैं
संबंधित पैटर्न
-- सबसे छोटी ID हटाना
DELETE FROM DemoTable ORDER BY UserId ASC LIMIT 1;
-- शीर्ष N हटाना
DELETE FROM DemoTable ORDER BY UserId DESC LIMIT 5;
-- शर्त के साथ सबसे बड़ी ID हटाना
DELETE FROM DemoTable WHERE status = 'inactive' ORDER BY UserId DESC LIMIT 1;