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

MySQL में ORDER BY DESC LIMIT 1 से अंतिम एंट्री अपडेट करना

ORDER BY ... LIMIT के साथ UPDATE

MySQL UPDATE स्टेटमेंट में ORDER BY और LIMIT क्लॉज सपोर्ट करता है, जिससे विशिष्ट क्रम में सीमित संख्या में पंक्तियों को अपडेट किया जा सकता है।

उदाहरण: टेबल बनाना और डेटा इन्सर्ट करना

mysql> CREATE TABLE DemoTable824(
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    ClientName VARCHAR(100),
    ClientAge INT
);
Query OK, 0 rows affected (0.56 sec)

रिकॉर्ड्स इन्सर्ट करना

mysql> INSERT INTO DemoTable824(ClientName,ClientAge) VALUES
    ('Chris',23),('Robert',26),('Bob',24),('David',27);
Query OK, 4 rows affected (...)

सभी रिकॉर्ड्स देखना

mysql> SELECT * FROM DemoTable824;
+----+------------+-----------+
| Id | ClientName | ClientAge |
+----+------------+-----------+
| 1  | Chris      | 23        |
| 2  | Robert     | 26        |
| 3  | Bob        | 24        |
| 4  | David      | 27        |
+----+------------+-----------+
4 rows in set (0.00 sec)

अंतिम रो (उच्चतम ID) अपडेट करने की क्वेरी

mysql> UPDATE DemoTable824 
    SET ClientName = 'Adam', ClientAge = 28 
    ORDER BY Id DESC LIMIT 1;
Query OK, 1 row affected (0.20 sec)
Rows matched: 1  Changed: 1  Warnings: 0

अपडेट के बाद डेटा देखना

mysql> SELECT * FROM DemoTable824;
+----+------------+-----------+
| Id | ClientName | ClientAge |
+----+------------+-----------+
| 1  | Chris      | 23        |
| 2  | Robert     | 26        |
| 3  | Bob        | 24        |
| 4  | Adam       | 28        |
+----+------------+-----------+
4 rows in set (0.00 sec)

क्वेरी व्याख्या

  • ORDER BY Id DESC - उच्चतम ID (अंतिम इन्सर्ट की गई पंक्ति) पहले
  • LIMIT 1 - केवल पहली पंक्ति (यानी अंतिम) अपडेट करें
  • बिना WHERE क्लॉज के, लेकिन ORDER BY + LIMIT के साथ सुरक्षित

सामान्य उपयोग के मामले

  • सबसे हाल का ऑर्डर/लेनदेन अपडेट करना
  • नवीनतम लॉग एंट्री संशोधित करना
  • सबसे नए रिकॉर्ड पर फ्लैग सेट करना
  • लेटेस्ट वर्जन रिकॉर्ड अपडेट करना

विशिष्ट ID की अंतिम एंट्री (पार्टीशन द्वारा)

यदि एक ही ID की कई पंक्तियां हैं (उदाहरण: लॉग टेबल):

UPDATE LogTable 
SET Status = 'Processed' 
WHERE UserId = 123 
ORDER BY LogTime DESC LIMIT 1;

सबक्वेरी अल्टरनेटिव (अधिक पोर्टेबल)

UPDATE DemoTable824 
SET ClientName = 'Adam', ClientAge = 28 
WHERE Id = (SELECT Id FROM DemoTable824 ORDER BY Id DESC LIMIT 1);

अन्य LIMIT पैटर्न

-- अंतिम 3 रो अपडेट करें
UPDATE DemoTable824 SET Status = 'Recent' ORDER BY Id DESC LIMIT 3;

-- सबसे पुरानी 2 रो हटाएं
DELETE FROM DemoTable824 ORDER BY Id ASC LIMIT 2;

चेतावनी

  • ORDER BY ... LIMIT के साथ UPDATE/DELETE MySQL-विशिष्ट है
  • रिप्लिकेशन में स्टेटमेंट-आधारित लॉगिंग के साथ नॉन-डिटरमिनिस्टिक हो सकता है
  • ROW-आधारित रिप्लिकेशन अनुशंसित
  • सुरक्षित अपडेट मोड (SQL_SAFE_UPDATES) इसे ब्लॉक कर सकता है
  1. MySQL से अंतिम 10 रो कैसे चुनें? MySQL से अंतिम 10 रो कैसे चुनें?

    MySQL से अंतिम 10 रो चुनने के लिए, हम SELECT स्टेटमेंट और LIMIT कॉन्सेप्ट के साथ सबक्वेरी का उपयोग कर सकते हैं। निम्न एक उदाहरण है। टेबल बनाना। mysql> create table Last10RecordsDemo -> ( -> id int, -> name varchar(100) -> ); Query OK, 0 rows affected (0.75 sec) टेबल में रिकॉर

  1. - MySQL में ORDER BY DESC LIMIT से अंतिम 30 पंक्तियां प्राप्त करें

    MySQL में अंतिम N पंक्तियां प्राप्त करने के लिए ORDER BY ... DESC LIMIT N का उपयोग करें, फिर आवश्यकतानुसार पुनः क्रमबद्ध करें। सिंटैक्स SELECT * FROM टेबल_नाम ORDER BY कॉलम_नाम DESC LIMIT 30; उदाहरण: अंतिम 30 पंक्तियां (ID अवरोही क्रम) 1. टेबल बनाएं (ऑटो-इन्क्रीमेंट ID) ); 2. 37 पंक्तियां डालें

  1. - MySQL में किसी दिनांक का अंतिम सेकंड (23:59:59) कैसे प्राप्त करें?

    MySQL में DATE() और INTERVAL अंकगणित का उपयोग करके किसी दिनांक का अंतिम सेकंड (दिन का अंत: 23:59:59) प्राप्त किया जा सकता है। तर्क DATE(datetime) - समय भाग हटाकर केवल दिनांक (00:00:00) + INTERVAL 1 DAY - अगले दिन की शुरुआत - INTERVAL 1 SECOND - 1 सेकंड घटाकर दिन का अंत उदाहरण तालिका बनाएं: mysql