MySQL-এ GREATEST() ফাংশন ব্যবহার করে একাধিক কলামের মধ্যে সর্বোচ্চ মান বের করে তার অনুযায়ী রেকর্ড সাজানো যায়।
উদাহরণ: টেবিল তৈরি এবং ডেটা ইনসার্ট
mysql> create table DemoTable834(
Value1 int,
Value2 int
);
Query OK, 0 rows affected (1.50 sec)
mysql> insert into DemoTable834 values(10,20); Query OK, 1 row affected (0.11 sec) mysql> insert into DemoTable834 values(40,50); Query OK, 1 row affected (0.13 sec) mysql> insert into DemoTable834 values(20,24); Query OK, 1 row affected (0.29 sec) mysql> insert into DemoTable834 values(30,10); Query OK, 1 row affected (0.14 sec)
সকল রেকর্ড দেখানো
mysql> select * from DemoTable834;
+--------+--------+ | Value1 | Value2 | +--------+--------+ | 10 | 20 | | 40 | 50 | | 20 | 24 | | 30 | 10 | +--------+--------+ 4 rows in set (0.00 sec)
GREATEST(Value1, Value2) ডেসেন্ডিং অর্ডারে সাজানো
mysql> select * from DemoTable834 order by greatest(Value1,Value2) DESC;
+--------+--------+ | Value1 | Value2 | +--------+--------+ | 40 | 50 | | 30 | 10 | | 20 | 24 | | 10 | 20 | +--------+--------+ 4 rows in set (0.00 sec)
ব্যাখ্যা
| Value1 | Value2 | GREATEST() | অর্ডার (DESC) |
|---|---|---|---|
| 40 | 50 | 50 | ১ম |
| 30 | 10 | 30 | ২য় |
| 20 | 24 | 24 | ৩য় |
| 10 | 20 | 20 | ৪র্থ |
GREATEST() vs LEAST()
GREATEST(val1, val2, ...)- সর্বোচ্চ মান রিটার্ন করেLEAST(val1, val2, ...)- সর্বনিম্ন মান রিটার্ন করে- যেকোনো আর্গুমেন্ট NULL হলে ফলাফল NULL হয়
COALESCE(GREATEST(a,b), 0)দিয়ে NULL হ্যান্ডল করুন
বিকল্প পদ্ধতি: CASE WHEN
ORDER BY CASE WHEN Value1 > Value2 THEN Value1 ELSE Value2 END DESC
ব্যবহারিক প্রয়োগ
- স্কোরিং:
ORDER BY GREATEST(score1, score2, score3) DESC - তארিখ:
ORDER BY GREATEST(created_at, updated_at, deleted_at) DESC - প্রাইস:
ORDER BY GREATEST(price, sale_price, offer_price) ASC(সর্বনিম্ন দাম)
দ্রষ্টব্য: GREATEST স্ট্রিং-ওরও কাজ করে (লেক্সিকোগ্রাফিক্যালি): GREATEST('apple', 'banana') → 'banana'।