সর্বোচ্চ মার্কস পাওয়া ছাত্রের নাম আপডেট করতে ORDER BY ... DESC 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)
সর্বোচ্চ মার্কস (৭৮) পাওয়া ছাত্র (Bob) এর নাম 'Adam' করুন
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;
ফলাফল (Bob -> Adam):
+-------------+--------------+ | StudentName | StudentMarks | +-------------+--------------+ | Chris | 45 | | Adam | 78 | | Mike | 34 | | Robert | 67 | +-------------+--------------+ 4 rows in set (0.00 sec)
ব্যাখ্যা
ORDER BY StudentMarks DESC- মার্কস নিম্নক্রমে সাজায় (সর্বোচ্চ প্রথমে)।LIMIT 1- শুধু প্রথম রো (সর্বোচ্চ) আপডেট করে।- MySQL-এ
UPDATE ... ORDER BY ... LIMITসাপোর্ট করা রয়েছে (স্ট্যান্ডার্ড SQL-এ নয়)।
সতর্কতা
- একই সর্বোচ্চ মার্কস একাধিক ছাত্র থাকলে কোনটি আপডেট হবে অনির্দিষ্ট (non-deterministic)। টাই-ব্রেকারের জন্য দ্বিতীয় কলাম যোগ করুন:
ORDER BY StudentMarks DESC, StudentId LIMIT 1। - WHERE ক্লজ না থাকলে সকল রো কান্সিডার হয়।