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

MySQL-এ ORDER BY FIELD() ব্যবহার করে IN() লিস্টের ক্রমে ফলাফল সর্ট করা

MySQL-এ IN() ক্লজে দেওয়া মানের ক্রম অনুযায়ী ফলাফল সর্ট করতে ORDER BY FIELD(column, val1, val2, ...) ব্যবহার করা হয়।

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

mysql> CREATE TABLE DemoTable (
    -> Number INT
    -> );
Query OK, 0 rows affected (0.54 sec)
mysql> INSERT INTO DemoTable VALUES(19), (30), (34), (28), (25), (29), (24);

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

mysql> SELECT * FROM DemoTable;

আউটপুট

+--------+
| Number |
+--------+
| 19     |
| 30     |
| 34     |
| 28     |
| 25     |
| 29     |
| 24     |
+--------+
7 rows in set (0.00 sec)

FIELD() ব্যবহার করে IN লিস্টের ক্রমে সর্ট

mysql> SELECT * FROM DemoTable 
    -> ORDER BY FIELD(Number, 30, 19, 34, 25, 28, 29, 24);

আউটপুট

+--------+
| Number |
+--------+
| 30     |
| 19     |
| 34     |
| 25     |
| 28     |
| 29     |
| 24     |
+--------+
7 rows in set (0.00 sec)

ব্যাখ্যা: FIELD(Number, 30, 19, 34, ...) — Number কলামের মান লিস্টে কততম পজিশনে আছে তা রিটার্ন করে (৩০ = ১, ১৯ = ২, ৩৪ = ৩...। না পেলে ০)। ORDER BY ডিফল্ট অরোহী ক্রমে সাজায়, তাই ১, ২, ৩... ক্রমে আসে। লিস্টে নাই মানগুলো (০) শেষে যাবে।

বিকল্প: ORDER BY CASE Number WHEN 30 THEN 1 WHEN 19 THEN 2 ... ELSE 99 END — FIELD() নাও থাকলে।

সতর্কতা: FIELD() কেস-ইনসেনসিটিভ (ডিফল্ট কলেশন অনুযায়ী)। বড় লিস্টে পারফরম্যান্স বিবেচনা করুন।

  1. MySQL কোয়েরি IF স্টেটমেন্টের ফলাফল হিসেবে স্ট্রিং রিটার্ন করার জন্য

  2. MySQL-এ তারিখ অনুযায়ী গ্রুপ করে ডুপ্লিকেট মান গণনা করা

  3. MySQL-এ নির্দিষ্ট কলাম থেকে শুধু 'NO' মান সংখ্যা বের করা

  4. MySQL-এ SELECT ক্যোয়ারির ফলাফল অর্ডার করা