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

MySQL-এ ROW_NUMBER() এর বিকল্প (ভেরিয়েবল ব্যবহার করে)

MySQL-এ (৮.০ এর আগে) ROW_NUMBER() ফাংশন নেই। কিন্তু ইউজার-ডিফাইনড ভেরিয়েবল ব্যবহার করে একই ফলাফল পাওয়া যায়।

সিনট্যাক্স (MySQL 8.0-এর আগের ভার্সন)

SELECT (@yourVariableName := @yourVariableName + 1) AS `anyAliasName`, 
       yourColumnName1, yourColumnName2, ... 
FROM yourTableName, (SELECT @yourVariableName := 0) AS anyAliasName;

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

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

mysql> CREATE TABLE RowNumberDemo (
    -> UserId INT,
    -> UserName VARCHAR(20)
    -> );
Query OK, 0 rows affected (0.74 sec)

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

mysql> INSERT INTO RowNumberDemo VALUES(10, 'John');
mysql> INSERT INTO RowNumberDemo VALUES(50, 'Carol');
mysql> INSERT INTO RowNumberDemo VALUES(100, 'Sam');
mysql> INSERT INTO RowNumberDemo VALUES(150, 'Mike');
mysql> INSERT INTO RowNumberDemo VALUES(210, 'Bob');

সকল রেকর্ড:

mysql> SELECT * FROM RowNumberDemo;
+--------+----------+
| UserId | UserName |
+--------+----------+
|     10 | John     |
|     50 | Carol    |
|    100 | Sam      |
|    150 | Mike     |
|    210 | Bob      |
+--------+----------+
5 rows in set (0.00 sec)

ভেরিয়েবল ব্যবহার করে রো নম্বর জেনারেট করুন

mysql> SELECT 
    -> (@ROW_NUMBER := @ROW_NUMBER + 1) AS `ROW_NUMBER`, 
    -> UserId, UserName 
    -> FROM RowNumberDemo, (SELECT @ROW_NUMBER := 0) AS t;
+------------+--------+----------+
| ROW_NUMBER | UserId | UserName |
+------------+--------+----------+
|          1 |     10 | John     |
|          2 |     50 | Carol    |
|          3 |    100 | Sam      |
|          4 |    150 | Mike     |
|          5 |    210 | Bob      |
+------------+--------+----------+
5 rows in set (0.03 sec)

MySQL 8.0+ এ উইন্ডো ফাংশন (আধুনিক পদ্ধতি)

SELECT ROW_NUMBER() OVER (ORDER BY UserId) AS ROW_NUMBER, UserId, UserName
FROM RowNumberDemo;

সুপারিশ: MySQL 8.0 বা নতুন ভার্সন ব্যবহার করলে উইন্ডো ফাংশন (ROW_NUMBER(), RANK(), DENSE_RANK()) ব্যবহার করুন - এটি আরও পঠনীয়, স্ট্যান্ডার্ড এবং পারফরম্যান্সে ভালো।

  1. MySQL-এ REGEXP ব্যবহার করে বর্ণানুক্রমিক খোঁজ (A, B, C দিয়ে শুরু হওয়া রেকর্ড)

  2. MySQL-এ IF() ফাংশন ব্যবহার করে খালি কলামের জন্য কাস্টম টেক্সট দেখান

  3. MySQL-এ LIKE অপারেটরকে IN() এর মতো ব্যবহার করা

  4. MySQL-এ REGEXP_INSTR ব্যবহার করে সার্চ কোয়েরি করা