इसके लिए ORDER BY DESC के साथ LIMIT क्लॉज का उपयोग करें। ORDER BY DESC अवरोही क्रम में ऑर्डर करता है जहां LIMIT रिकॉर्ड्स की संख्या सेट करता है। यहां हम LIMIT 1 सेट करेंगे क्योंकि हम केवल एक रिकॉर्ड चाहते हैं।
आइए पहले एक टेबल बनाते हैं:
mysql> create table DemoTable (
StudentName varchar(100),
StudentMarks int );
Query OK, 0 rows affected (0.54 sec)
इन्सर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें:
mysql> insert into DemoTable values('Chris',45);
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable values('Bob',78);
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable values('Mike',34);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values('Robert',67);
Query OK, 1 row affected (0.16 sec)
सेलेक्ट स्टेटमेंट का उपयोग करके टेबल से सभी रिकॉर्ड प्रदर्शित करें:
mysql> select * from DemoTable;
यह निम्नलिखिक आउटपुट देगा:
+-------------+--------------+ | StudentName | StudentMarks | +-------------+--------------+ | Chris | 45 | | Bob | 78 | | Mike | 34 | | Robert | 67 | +-------------+--------------+ 4 rows in set (0.00 sec)
अवरोही क्रम में ऑर्डर करके केवल एक मान अपडेट करने की क्वेरी
mysql> update DemoTable set StudentName='Adam' order by StudentMarks DESC LIMIT 1; Query OK, 1 row affected (0.10 sec) Rows matched: 1 Changed: 1 Warnings: 0
आइए टेबल रिकॉर्ड एक बार फिर जांचें:
mysql> select * from DemoTable;
यह निम्नलिखिक आउटपुट देगा:
+-------------+--------------+ | StudentName | StudentMarks | +-------------+--------------+ | Chris | 45 | | Adam | 78 | | Mike | 34 | | Robert | 67 | +-------------+--------------+ 4 rows in set (0.00 sec)
व्याख्या
ORDER BY StudentMarks DESCअंकों के अवरोही क्रम में सॉर्ट करता है (78, 67, 45, 34)LIMIT 1केवल पहली पंक्ति (उच्चतम अंक: 78, Bob) को अपडेट करता है- Bob का नाम 'Adam' में बदल जाता है, अंक 78 रहता है
- MySQL UPDATE में ORDER BY और LIMIT का समर्थन करता है (मानक SQL में नहीं)
सावधानी
WHERE क्लॉज के बिना ORDER BY LIMIT अप्रत्याशित हो सकता है यदि डेटा बदलता है। उत्पादन में विशिष्ट WHERE शर्त जोड़ें।