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

MySQL-এ কাস্টম ফিল্ড ভ্যালু অনুযায়ী ORDER BY করা

কাস্টম ফিল্ড ভ্যালু অনুযায়ী সর্ট করতে FIND_IN_SET() ফাংশন ব্যবহার করুন। প্রথমে একটি টেবিল তৈরি করি:

mysql> create table DemoTable677(
    UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    UserStatus text
);
Query OK, 0 rows affected (1.07 sec)

কিছু স্ট্যাটাস ইনসার্ট করি:

mysql> insert into DemoTable677(UserStatus) values('BUSY');
Query OK, 1 row affected (0.23 sec)
mysql> insert into DemoTable677(UserStatus) values('AT WORK');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable677(UserStatus) values('OFFLINE');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable677(UserStatus) values('BLOCKED');
Query OK, 1 row affected (0.17 sec)

সব রেকর্ড দেখি:

mysql> select *from DemoTable677;

আউটপুট:

+--------+------------+
| UserId | UserStatus |
+--------+------------+
| 1      | BUSY       |
| 2      | AT WORK    |
| 3      | OFFLINE    |
| 4      | BLOCKED    |
+--------+------------+
4 rows in set (0.00 sec)

কাস্টম অর্ডার (BLOCKED, AT WORK, OFFLINE, BUSY) অনুযায়ী সর্ট করার ক্যোয়ারি:

mysql> select *from DemoTable677 ORDER BY FIND_IN_SET(UserStatus, 'BLOCKED,AT WORK,OFFLINE,BUSY');

আউটপুট:

+--------+------------+
| UserId | UserStatus |
+--------+------------+
| 4      | BLOCKED    |
| 2      | AT WORK    |
| 3      | OFFLINE    |
| 1      | BUSY       |
+--------+------------+
4 rows in set (0.03 sec)

ব্যাখ্যা: FIND_IN_SET কমা-সেপারেটেড লিস্টে ভ্যালুর পজিশন রিটার্ন করে। যে ভ্যালু লিস্টে নেই সেটার জন্য ০ রিটার্ন করে (সर्वোপরি আসবে)।

  1. MySQL-এ ORDER BY CASE WHEN ব্যবহার করে কাস্টম সর্টিং করা

  2. MySQL-এ ALTER TABLE ব্যবহার করে কাস্টম শুরুর মান সহ AUTO_INCREMENT কলাম যোগ করুন

  3. MySQL-এ ORDER BY FIELD() এবং OR শর্ত ব্যবহার করে প্রায়োরিটি ভিত্তিক সর্টিং

  4. MySQL-এ GROUP BY ব্যবহার করে ফিল্ড আপডেট করা