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

MySQL-এ ORDER BY CASE ব্যবহার করা

এজন্য ORDER BY NULLIF() ব্যবহার করতে পারেন। প্রথমে একটি টেবিল তৈরি করি:

mysql> create table DemoTable672(
    CustomerId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    CustomerName varchar(100),
    CustomerAmount int
);
Query OK, 0 rows affected (0.81 sec)

কিছু রেকর্ড ইনসার্ট করি (NULL এবং খালি স্ট্রিং সহ):

mysql> insert into DemoTable672(CustomerName,CustomerAmount) values('Chris',560);
Query OK, 1 row affected (0.51 sec)
mysql> insert into DemoTable672(CustomerName,CustomerAmount) values('Robert',null);
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable672(CustomerName,CustomerAmount) values('',450);
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable672(CustomerName,CustomerAmount) values('David',456);
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable672(CustomerName,CustomerAmount) values('Carol',786);
Query OK, 1 row affected (0.14 sec)

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

mysql> select *from DemoTable672;

আউটপুট:

+------------+--------------+----------------+
| CustomerId | CustomerName | CustomerAmount |
+------------+--------------+----------------+
| 1          | Chris        | 560            |
| 2          | Robert       | NULL           |
| 3          |              | 450            |
| 4          | David        | 456            |
| 5          | Carol        | 786            |
+------------+--------------+----------------+
5 rows in set (0.00 sec)

MySQL ORDER BY WITH CASE বাস্তবায়ন (NULLIF এবং FIELD ফাংশন ব্যবহার):

mysql> select *from DemoTable672 ORDER BY NULLIF(CustomerName,'') IS NULL, FIELD(CustomerAmount,560,786,450,456);

আউটপুট:

+------------+--------------+----------------+
| CustomerId | CustomerName | CustomerAmount |
+------------+--------------+----------------+
| 2          | Robert       | NULL           |
| 1          | Chris        | 560            |
| 5          | Carol        | 786            |
| 4          | David        | 456            |
| 3          |              | 450            |
+------------+--------------+----------------+
5 rows in set (0.04 sec)

ব্যাখ্যা: প্রথমে খালি নাম ও NULL নামগুলো উপরে এসেছে। তারপর CustomerAmount কাস্টম অর্ডারে (560, 786, 450, 456) সর্ট হয়েছে।

  1. MySQL-এ GROUP_CONCAT() এবং ORDER BY ব্যবহার করে এগরিগেট ফাংশনে সর্টিং প্রয়োগ করুন

  2. MySQL-এ ইউজার-ডিফাইনড ভেরিয়েবল দিয়ে ORDER BY করা

  3. MySQL-এ CASE WHEN দিয়ে শর্তভিত্তিক কাউন্ট করা (Conditional Aggregation)

  4. MySQL-এ একাধিক LIKE অপারেটর ORDER BY-এ ব্যবহার করা