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

MySQL-এ IN ক্লজের ক্রম অনুযায়ী রো সিলেক্ট করা

MySQL-এ IN() ক্লজ ব্যবহার করলে রেজাল্ট স্বয়ংক্রিয়ভাবে সর্ট হয়। IN ক্লজের দেওয়া ক্রম অনুযায়ী রেজাল্ট পেতে FIND_IN_SET() ফাংশন ব্যবহার করতে হয়।

সিনট্যাক্স

SELECT yourAlias.* 
FROM yourTableName yourAlias 
WHERE yourAlias.yourColumnName IN(value1, value2, ... N)
ORDER BY FIND_IN_SET(yourAlias.yourColumnName, 'value1,value2,...N');

উদাহরণ দিয়ে বুঝি

টেবিল তৈরি করুন:

mysql> CREATE TABLE InDemo (
    -> CodeId INT,
    -> Name VARCHAR(20)
    -> );
Query OK, 0 rows affected (0.95 sec)

রেকর্ড ইনসার্ট করুন:

mysql> INSERT INTO InDemo VALUES(1, 'John');
mysql> INSERT INTO InDemo VALUES(2, 'Carol');
mysql> INSERT INTO InDemo VALUES(3, 'Sam');
mysql> INSERT INTO InDemo VALUES(4, 'Bob');

সর্টিং ছাড়া ডেটা:

mysql> SELECT * FROM InDemo;
+--------+-------+
| CodeId | Name  |
+--------+-------+
|      1 | John  |
|      2 | Carol |
|      3 | Sam   |
|      4 | Bob   |
+--------+-------+
4 rows in set (0.00 sec)

IN ক্লজের ক্রম (1,3,2,4) অনুযায়ী সিলেক্ট করুন

mysql> SELECT tbl.* 
    -> FROM InDemo tbl 
    -> WHERE tbl.CodeId IN(1,3,2,4) 
    -> ORDER BY FIND_IN_SET(tbl.CodeId, '1,3,2,4');
+--------+-------+
| CodeId | Name  |
+--------+-------+
|      1 | John  |
|      3 | Sam   |
|      2 | Carol |
|      4 | Bob   |
+--------+-------+
4 rows in set (0.00 sec)

ব্যাখ্যা: নরমাল IN() দিলে আউটপুট আসত 1,2,3,4 ক্রমে। কিন্তু FIND_IN_SET() ব্যবহার করলে IN-এ দেওয়া ক্রম (1,3,2,4) অনুযায়ী আউটপুট আসেছে।

সতর্কতা: FIND_IN_SET() স্ট্রিং-ভিত্তিক কাজ করে, বড় ডেটাসেটে পারফরম্যান্স প্রভাবিত হতে পারে।

  1. MySQL-এ ORDER BY ক্লজের ব্যবহারিতা

  2. ORDER BY ক্লজ ব্যবহার করে MySQL ভিউ তৈরি করা

  3. MySQL-এ UNION এবং ORDER BY ক্লজ একসাথে ব্যবহার

  4. MySQL-এ শেষ ১০টি সারি কীভাবে বের করবেন?