কম্পিউটার টিউটোরিয়াল

MySQL-এ ORDER BY DESC LIMIT 1 ব্যবহার করে সর্বোচ্চ মার্কস পাওয়া ছাত্রের নাম আপডেট করা

সর্বোচ্চ মার্কস পাওয়া ছাত্রের নাম আপডেট করতে 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 ক্লজ না থাকলে সকল রো কান্সিডার হয়।
  1. MySQL-এ শুধু একটি কলাম আপডেট করা

  2. MySQL IN() 절에 단일 값만 지정해도 되나요?

  3. MySQL-এ SELECT ... INTO @variable ব্যবহার করে নির্দিষ্ট রো থেকে একক মান বের করা

  4. MySQL-এ NOT IN ক্লজ ব্যবহার করে নির্দিষ্ট মান বাদ দিয়ে ডেটা বের করা