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

MySQL-এ সাবকোয়েরি দিয়ে কলামের সর্বোচ্চ মান বের করে সব রোতে সেট করা


SELECT MAX(...) সাবকোয়েরি দিয়ে সব রোয়ে একই সর্বোচ্চ মান দেখানো

MySQL-এ একটি কলামের সর্বোচ্চ মান বের করে সেই মানটি একই টেবিলের সব রোয়ে একটি নতুন কলাম হিসেবে দেখাতে SELECT ..., (SELECT MAX(col) FROM table) AS max_col FROM table প্যাটার্ন ব্যবহার করা হয়।

টেবিল ও ডেটা

mysql> CREATE TABLE DemoTable (FirstName VARCHAR(100), Score INT);
mysql> INSERT INTO DemoTable VALUES('David',59), ('Chris',97), ('Bob',98), ('Carol',91);

সব রেকর্ড

+-----------+-------+
| FirstName | Score |
+-----------+-------+
| David     | 59    |
| Chris     | 97    |
| Bob       | 98    |
| Carol     | 91    |
+-----------+-------+

সাবকোয়েরি দিয়ে MAX(Score) সব রোতে দেখানো

mysql> SELECT FirstName, (SELECT MAX(Score) FROM DemoTable) AS Score FROM DemoTable;
+-----------+-------+
| FirstName | Score |
+-----------+-------+
| David     | 98    |
| Chris     | 98    |
| Bob       | 98    |
| Carol     | 98    |
+-----------+-------+

ব্যাখ্যা

  • (SELECT MAX(Score) FROM DemoTable) — স্কেলার সাবকোয়েরি, একক মান (৯৮) রিটার্ন করে।
  • প্রতিটি আউটপুট রোতে এই মানটি Score এলিয়াসে দেখায়।
  • মূল Score কলামটি আপডেট হয়নি, শুধু SELECT-এ দেখায়।

আপডেট করতে চাইলে (সাবকোয়েরি + UPDATE)

UPDATE DemoTable SET Score = (SELECT MAX(Score) FROM DemoTable);

এটি সব রোয়ের Score কে ৯৮ করবে।

পারফরম্যান্স নোট

  • সাবকোয়েরি প্রতি রো এক্সিকিউট হতে পারে (অপ্টিমাইজার ডিপেন্ডেন্ট)।
  • বेहতর: SELECT FirstName, (SELECT MAX(Score) FROM DemoTable) AS MaxScore FROM DemoTable; — একবার ক্যালকুলেট হয় (MySQL অপ্টিমাইজার সাধারণত ক্যাশ করে)।
  • ভেরিয়েবল ব্যবহার করুন: SET @max = (SELECT MAX(Score) FROM DemoTable); SELECT FirstName, @max AS MaxScore FROM DemoTable;
  1. MySQL-এ কলামের সব মান থেকে শেষ ৩ ডিজিটের যোগফল বের করা

  2. MySQL-এ CASE WHEN এবং GROUP_CONCAT ব্যবহার করে শর্তসাপেক্ষে কলাম মান কনক্যাটেনেট করা

  3. MySQL-এ নির্দিষ্ট মান ثابت রেখে বাকি সারি র‍্যান্ডমভাবে সর্ট করা

  4. MySQL-এ প্রথম ৩ রোয়ের কলাম মান নির্দিষ্ট মান দিয়ে আপডেট করা