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

MySQL-এ ORDER BY FIELD() ব্যবহার করে কাস্টম অর্ডারিং (কিছু ডিসেন্ডিং, কিছু আসেন্ডিং)

নির্দিষ্ট মানগুলোকে কাস্টম ক্রমে সাজাতে FIELD() ফাংশন ব্যবহার করুন। প্রথমে একটি টেবিল তৈরি করি:

mysql> CREATE TABLE DemoTable (Value INT);

রেকর্ড যোগ করি:

mysql> INSERT INTO DemoTable VALUES(10), (70), (60), (56), (81), (85);

সকল রেকর্ড দেখতে:

mysql> SELECT * FROM DemoTable;

আউটপুট:

+-------+
| Value |
+-------+
| 10    |
| 70    |
| 60    |
| 56    |
| 81    |
| 85    |
+-------+

নির্দিষ্ট ৩টি মান (৬০, ৭০, ৮১) ডিসেন্ডিং, বাকিগুলো আসেন্ডিং করার কোয়েরি:

mysql> SELECT * FROM DemoTable ORDER BY FIELD(Value, 60, 70, 81) DESC;

আউটপুট:

+-------+
| Value |
+-------+
| 81    |
| 70    |
| 60    |
| 10    |
| 56    |
| 85    |
+-------+

ব্যাখ্যা: FIELD(Value, 60, 70, 81) ফাংশনটি:

  • Value=60 হলে ১ ফেরত দেয়
  • Value=70 হলে ২ ফেরত দেয়
  • Value=81 হলে ৩ ফেরত দেয়
  • অন্য মান হলে ০ ফেরত দেয়

DESC দিয়ে ৩, ২, ১, ০ ক্রমে সাজানো হয়েছে। তাই ৮১, ৭০, ৬০ প্রথমে আসে। বাকি মানগুলো (যাদের FIELD=০) সব একসাথে থাকে, তারপর ডিফল্ট ক্রম (ইনসার্ট অর্ডার বা ক্লাস্টারিং) মেনে চলে। সম্পূর্ণ নিয়ন্ত্রণের জন্য:

ORDER BY FIELD(Value, 60, 70, 81) DESC, Value ASC
  1. MySQL-এ IN() অপারেটর আন্ডারস্কোর (_) যুক্ত কলাম ভ্যালুর সাথে ব্যবহার

  2. MySQL-এ একক ফিল্ড দ্বারা অর্ডার করে বাকি রেকর্ডগুলো একই ক্রমে দেখানো

  3. MySQL-এ সাবকোয়েরি ব্যবহার করে শেষ ৩টি রো এসেন্ডিং অর্ডারে পান

  4. MySQL-এ নির্দিষ্ট ভ্যালু প্রথমে দেখিয়ে বাকি অর্ডার করানো (ORDER BY ট্রিক)