নির্দিষ্ট মানগুলোকে কাস্টম ক্রমে সাজাতে 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