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

MySQL-এ ORDER BY FIELD() ব্যবহার করে কাস্টম ওয়ার্ড অর্ডারিং

MySQL-এ কোনো কলামের ভ্যালু অনুযায়ী কাস্টম ক্রমে (আলফাবেটিক্যাল নয়) সাজাতে ORDER BY FIELD() ফাংশন ব্যবহার করা হয়।

টেবিল ও ডেটা

mysql> CREATE TABLE DemoTable (
    StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    StudentFirstName VARCHAR(20),
    StudentFavouriteSubject VARCHAR(100)
);
mysql> INSERT INTO DemoTable(StudentFirstName, StudentFavouriteSubject) VALUES 
('Larry', 'Java'), ('Sam', 'C'), ('Bob', 'MongoDB'), ('David', 'MySQL');

সকল ডেটা

+-----------+------------------+-------------------------+
| StudentId | StudentFirstName | StudentFavouriteSubject |
+-----------+------------------+-------------------------+
| 1         | Larry            | Java                    |
| 2         | Sam              | C                       |
| 3         | Bob              | MongoDB                 |
| 4         | David            | MySQL                   |
+-----------+-------------------------+

কাস্টম অর্ডার: MongoDB, MySQL, Java, C

mysql> SELECT * FROM DemoTable 
       ORDER BY FIELD(StudentFavouriteSubject, 'MongoDB', 'MySQL', 'Java', 'C');

ফলাফল

+-----------+------------------+-------------------------+
| StudentId | StudentFirstName | StudentFavouriteSubject |
+-----------+------------------+-------------------------+
| 3         | Bob              | MongoDB                 |
| 4         | David            | MySQL                   |
| 1         | Larry            | Java                    |
| 2         | Sam              | C                       |
+-----------+------------------+-------------------------+

ব্যাখ্যা: FIELD(str, val1, val2, ...) ফাংশনটি str কোন পজিশনে আছে সেটি রিটার্ন করে (১-বেসড)। না পেলে ০। ORDER BY FIELD(...) এই পজিশন অনুযায়ী সাজায়। লিস্টে নাই এমন ভ্যালুগুলো সবশেষে আসে (পজিশন ০)।

  1. MySQL-এ LIKE এবং CONCAT() ব্যবহার করে স্ট্রিং-এ নির্দিষ্ট শব্দ আছে কিনা যাচাই করা

  2. MySQL টেবিলের জন্য 'user' শব্দ ব্যবহার করা যাবে কি?

  3. MySQL-এ RegExp ব্যবহার করে নির্দিষ্ট শব্দ খুঁজে বের করা

  4. C# OrderBy Descending