टेबल से अंतिम रिकॉर्ड (शर्त के साथ) हटाने के लिए, आपको ORDER BY DESC के साथ LIMIT 1 का उपयोग करने की आवश्यकता है।
सिंटैक्स इस प्रकार है:
DELETE FROM yourTableName WHERE yourColumnName1=yourValue ORDER BY yourColumnName2 DESC LIMIT 1;
उपरोक्त सिंटैक्स टेबल से अंतिम रिकॉर्ड (शर्त के साथ) हटा देगा। यह कॉलम को अवरोही क्रम में क्रमबद्ध करता है और हटाने के लिए पहले तत्व को चुनता है।
उपरोक्त सिंटैक्स को समझने के लिए, आइए एक टेबल बनाते हैं। टेबल बनाने की क्वेरी इस प्रकार है:
mysql> create table UserLoginTable -> ( -> Id int NOT NULL AUTO_INCREMENT, -> UserId int, -> UserLoginDateTime datetime, -> PRIMARY KEY(Id) -> ); Query OK, 0 rows affected (0.94 sec)
insert कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड्स डालें। क्वेरी इस प्रकार है:
mysql> insert into UserLoginTable(UserId,UserLoginDateTime) values(2,'2019-01-27 13:47:20'); Query OK, 1 row affected (0.19 sec) mysql> insert into UserLoginTable(UserId,UserLoginDateTime) values(1,'2018-11-28 12:30:12'); Query OK, 1 row affected (0.16 sec) mysql> insert into UserLoginTable(UserId,UserLoginDateTime) values(2,'2019-01-26 11:30:30'); Query OK, 1 row affected (0.20 sec) mysql> insert into UserLoginTable(UserId,UserLoginDateTime) values(1,'2015-03-11 15:23:55'); Query OK, 1 row affected (0.21 sec) mysql> insert into UserLoginTable(UserId,UserLoginDateTime) values(2,'2019-03-21 16:01:56'); Query OK, 1 row affected (0.23 sec)
अब आप select स्टेटमेंट का उपयोग करके टेबल से सभी रिकॉर्ड्स प्रदर्शित कर सकते हैं। क्वेरी इस प्रकार है:
mysql> select *from UserLoginTable;
निम्नलिखित आउटपुट है:
+----+--------+---------------------+ | Id | UserId | UserLoginDateTime | +----+--------+---------------------+ | 1 | 2 | 2019-01-27 13:47:20 | | 2 | 1 | 2018-11-28 12:30:12 | | 3 | 2 | 2019-01-26 11:30:30 | | 4 | 1 | 2015-03-11 15:23:55 | | 5 | 2 | 2019-03-21 16:01:56 | +----+--------+---------------------+ 5 rows in set (0.00 sec)
टेबल से अंतिम रिकॉर्ड (शर्त के साथ) हटाने की क्वेरी यहां है:
mysql> delete from UserLoginTable where UserId=2 ORDER BY UserLoginDateTime DESC LIMIT 1; Query OK, 1 row affected (0.16 sec)
select स्टेटमेंट का उपयोग करके टेबल रिकॉर्ड एक बार फिर जांचें। क्वेरी इस प्रकार है:
mysql> select *from UserLoginTable;
निम्नलिखित आउटपुट है:
+----+--------+---------------------+ | Id | UserId | UserLoginDateTime | +----+--------+---------------------+ | 1 | 2 | 2019-01-27 13:47:20 | | 2 | 1 | 2018-11-28 12:30:12 | | 3 | 2 | 2019-01-26 11:30:30 | | 4 | 1 | 2015-03-11 15:23:55 | +----+--------+---------------------+ 4 rows in set (0.00 sec)
UserId 2 के साथ अंतिम रिकॉर्ड अब टेबल से हटा दिया गया है।
नोट:ORDER BY ... LIMITके साथDELETEMySQL-विशिष्ट सिंटैक्स है (मानक SQL नहीं)। यह निर्दिष्ट शर्त से मेल खाने वाली नवीनतम (या सबसे पुरानी) पंक्ति को हटाने के लिए उपयोगी है। बड़े डेटासेट पर इंडेक्स (यहांUserId, UserLoginDateTimeपर संयुक्त इंडेक्स) सुनिश्चित करें।