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

MySQL-এ WHERE IN ক্লজে নির্দিষ্ট ক্রম মেইনটেইন করা (FIND_IN_SET)

MySQL-এ WHERE id IN (...)` ক্লজে রেজাল্টের ক্রম নির্দিষ্ট করতে FIND_IN_SET() ফাংশন ORDER BY` קלজে ব্যবহার করা হয়।

সিনট্যাক্স

SELECT * FROM yourTableName
WHERE yourColumnName IN (val1, val2, val3, ...)
ORDER BY FIND_IN_SET(yourColumnName, 'val1,val2,val3,...');

উদাহরণ

টেবিল তৈরি:

mysql> CREATE TABLE FindInSetDemo (
    -> Id INT, Name VARCHAR(20), Age INT
    -> );

ডেটা ইনসার্ট (আউট অফ অর্ডার):

mysql> INSERT INTO FindInSetDemo VALUES(10,'John',23), (1,'Carol',21), (4,'Bob',25), (6,'Sam',26), (7,'Maxwell',29), (8,'Mike',22), (2,'David',27), (3,'James',20);

সকল রেকর্ড:

mysql> SELECT * FROM FindInSetDemo;
+------+---------+------+
| Id   | Name    | Age  |
+------+---------+------+
| 10   | John    | 23   |
| 1    | Carol   | 21   |
| 4    | Bob     | 25   |
| 6    | Sam     | 26   |
| 7    | Maxwell | 29   |
| 8    | Mike    | 22   |
| 2    | David   | 27   |
| 3    | James   | 20   |
+------+---------+------+

নির্দিষ্ট ক্রম (1, 4, 6, 7) অনুযায়ী রেজাল্ট:

mysql> SELECT * FROM FindInSetDemo
    -> WHERE Id IN (1,4,6,7)
    -> ORDER BY FIND_IN_SET(Id, '1,4,6,7');
+------+---------+------+
| Id   | Name    | Age  |
+------+---------+------+
| 1    | Carol   | 21   |
| 4    | Bob     | 25   |
| 6    | Sam     | 26   |
| 7    | Maxwell | 29   |
+------+---------+------+

ব্যাখ্যা: FIND_IN_SET(Id, '1,4,6,7') প্রতিটি Id-এর জন্য সেটে তার পজিশন রিটার্ন করে (১→১, ৪→২, ৬→৩, ৭→৪)। ORDER BY সেই পজিশন অনুযায়ী সাজায়। সতর্কতা: `FIND_IN_SET` স্ট্রিং কম্পারিজন করে, ইন্টিজার কলামের জন্য অটোমেটিক কাস্ট হয়। বড় ডেটাসেটে পারফরম্যান্সের জন্য FIELD() ফাংশন ভালো: ORDER BY FIELD(Id, 1,4,6,7)।

  1. MySQL-এ ORDER BY Amount=0, Amount দিয়ে শূন্য মানগুলো শেষে পাঠানো

  2. MySQL VIEW-এ WHERE ক্লজ ব্যবহার করা

  3. MySQL-এ রিজার্ভড ওয়ার্ড 'order' টেবিল নাম হিসেবে ব্যবহার করুন (ব্যাকটিকস)

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