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

MySQL-এ IN() ক্লজে সর্টিং এড়িয়ে FIND_IN_SET() ব্যবহার করা

MySQL-এ IN() ক্লজ ব্যবহার করলে রেজাল্ট স্বয়ংক্রিয়ভাবে সর্ট হয়। নির্দিষ্ট ক্রম রক্ষা করতে ORDER BY FIND_IN_SET() ব্যবহার করুন।

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

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

mysql> CREATE TABLE ProductStock (
    -> ProductId INT,
    -> ProductName VARCHAR(20),
    -> ProductQuantity INT,
    -> ProductPrice FLOAT
    -> );
Query OK, 0 rows affected (0.79 sec)

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

mysql> INSERT INTO ProductStock VALUES(1, 'Product-101', 10, 500.56);
mysql> INSERT INTO ProductStock VALUES(25, 'Product-111', 5, 150.00);
mysql> INSERT INTO ProductStock VALUES(67, 'Product-311', 7, 1000.50);
mysql> INSERT INTO ProductStock VALUES(55, 'Product-561', 8, 900.00);
mysql> INSERT INTO ProductStock VALUES(75, 'Product-221', 15, 670.56);

সকল রেকর্ড:

mysql> SELECT * FROM ProductStock;
+-----------+-------------+-----------------+--------------+
| ProductId | ProductName | ProductQuantity | ProductPrice |
+-----------+-------------+-----------------+--------------+
|         1 | Product-101 |              10 |       500.56 |
|        25 | Product-111 |               5 |        150   |
|        67 | Product-311 |               7 |      1000.5  |
|        55 | Product-561 |               8 |        900   |
|        75 | Product-221 |              15 |       670.56 |
+-----------+-------------+-----------------+--------------+
5 rows in set (0.00 sec)

IN() ক্লজে ক্রম (25,55,67,75,1) অনুযায়ী রেজাল্ট

mysql> SELECT * FROM ProductStock 
    -> WHERE ProductId IN(25, 55, 67, 75, 1) 
    -> ORDER BY FIND_IN_SET(ProductId, '25,55,67,75,1');
+-----------+-------------+-----------------+--------------+
| ProductId | ProductName | ProductQuantity | ProductPrice |
+-----------+-------------+-----------------+--------------+
|        25 | Product-111 |               5 |        150   |
|        55 | Product-561 |               8 |        900   |
|        67 | Product-311 |               7 |      1000.5  |
|        75 | Product-221 |              15 |       670.56 |
|         1 | Product-101 |              10 |       500.56 |
+-----------+-------------+-----------------+--------------+
5 rows in set (0.31 sec)

ব্যাখ্যা: নরমাল IN(25,55,67,75,1) দিলে আউটপুট আসত 1, 25, 55, 67, 75 ক্রমে (সর্টেড)। FIND_IN_SET() ব্যবহার করলে IN-এ দেওয়া ক্রমই রক্ষা হয়েছে।

FIND_IN_SET() সিনট্যাক্স

FIND_IN_SET(str, strlist)
  • strlist-এ str খুঁজে পজিশন (১-ভিত্তিক) রিটার্ন করে
  • নাও পেলে ০ রিটার্ন করে
  • কমা-সেপারেটেড স্ট্রিং লিস্টে কাজ করে

সতর্কতা: বড় ডেটাসেটে FIND_IN_SET() স্লো হতে পারে (ইনডেক্স ব্যবহার করে না)। বিকল্প: FIELD() ফাংশন বা ডিরাইভড টেবিল/সিটি-ই.join ব্যবহার করুন।

  1. MySQL-এ INSERT INTO SELECT ব্যবহার করে এক কলামের মান অন্য টেবিলে কপি করা

  2. MySQL কোয়েরি: AND OR ব্যবহার করে নির্বাচন করা

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

  4. MySQL-এ UNION SELECT এবং IN ক্লজ একসাথে ব্যবহার