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

MySQL-এ ORDER BY IF() ব্যবহার করে নির্দিষ্ট মানকে প্রথমে আনার সর্টিং

একই কলামে নির্দিষ্ট মান (যেমন ৯৯) প্রথমে দেখানোর জন্য ORDER BY IF(condition, 1, 0), column ব্যবহার করা হয়। এটি কাস্টম সর্টিং অর্ডার তৈরি করে।

টেবিল তৈরি ও ডেটা ইনসার্ট

mysql> CREATE TABLE DemoTable801 (Score INT);
Query OK, 0 rows affected (0.69 sec)
mysql> INSERT INTO DemoTable801 VALUES (30);
Query OK, 1 row affected (0.19 sec)
mysql> INSERT INTO DemoTable801 VALUES (99);
Query OK, 1 row affected (0.16 sec)
mysql> INSERT INTO DemoTable801 VALUES (45);
Query OK, 1 row affected (0.16 sec)
mysql> INSERT INTO DemoTable801 VALUES (55);
Query OK, 1 row affected (0.16 sec)
mysql> INSERT INTO DemoTable801 VALUES (99);
Query OK, 1 row affected (0.19 sec)
mysql> INSERT INTO DemoTable801 VALUES (69);
Query OK, 1 row affected (0.13 sec)
mysql> INSERT INTO DemoTable801 VALUES (25);
Query OK, 1 row affected (0.20 sec)
mysql> INSERT INTO DemoTable801 VALUES (79);
Query OK, 1 row affected (0.12 sec)

রেকর্ড দেখানো

mysql> SELECT * FROM DemoTable801;

আউটপুট:

+-------+
| Score |
+-------+
| 30    |
| 99    |
| 45    |
| 55    |
| 99    |
| 69    |
| 25    |
| 79    |
+-------+
8 rows in set (0.00 sec)

৯৯ মানগুলোকে প্রথমে আনে বাকি আসেন্ডিং সর্ট

mysql> SELECT * FROM DemoTable801 
ORDER BY IF(Score = 99, 1, 0), Score;

ফলাফল (৯৯গুলো আগে, তারপর বাকি আসেন্ডিং):

+-------+
| Score |
+-------+
| 25    |
| 30    |
| 45    |
| 55    |
| 69    |
| 79    |
| 99    |
| 99    |
+-------+
8 rows in set (0.00 sec)

ব্যাখ্যা

  • IF(Score = 99, 1, 0) - স্কোর ৯৯ হলে ১, অন্যথায় ০ রিটার্ন করে।
  • ORDER BY ..., Score - প্রথমে IF-এর ফলাফল (১ আগে আসে), তারপর Score আসেন্ডিং।
  • একই IF ফলাফলের মধ্যে Score অনুযায়ী সর্ট হয়।

বিকল্প: CASE WHEN

ORDER BY CASE WHEN Score = 99 THEN 0 ELSE 1 END, Score

এখানে ০ আগে আসে, তাই ৯৯वाले আগে আসবে। একাধিক প্রায়োরিটি লেভেলের জন্য CASE ভালো।

  1. MySQL-এ GROUP BY ও ORDER BY FIELD একসাথে ব্যবহার করে কাস্টম সর্টিং

  2. MySQL-এ ORDER BY FIELD() দিয়ে IN ক্লজের কৃত্রিম ক্রম অনুযায়ী ফলাফল সাজানো

  3. MySQL কোয়ারি: একাধিক ID দ্বারা সাজানো (ORDER BY FIELD)

  4. MySQL-এ ORDER BY FIELD() এবং ID দিয়ে সেকেন্ডারি সর্টিং একসাথে করুন