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

MySQL-এ ডুপ্লিকেট বাদ দিয়ে শুধু একটি রো সিলেক্ট করা


GROUP BY ও MIN() দিয়ে ডুপ্লিকেট হ্যান্ডলিং

যদি একটি কলামে ডুপ্লিকেট ভ্যালু থাকে এবং আপনি প্রতিটি গ্রুপ থেকে শুধু একটি রো (যেমন সবচেয়ে ছোট ID) চান, তবে GROUP BY এবং এগরিগেট ফাংশন ব্যবহার করুন।

সিনট্যাক্স

SELECT MIN(yourColumnName1), yourColumnName2 FROM yourTableName GROUP BY yourColumnName2;

উদাহরণ

টেবিল তৈরি

mysql> create table doNotSelectDuplicateValuesDemo (
    -> User_Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> User_Name varchar(20)
    -> );
Query OK, 0 rows affected (0.78 sec)

ডেটা ইনসার্ট (ডুপ্লিকেট সহ)

mysql> insert into doNotSelectDuplicateValuesDemo(User_Name) values('John');
Query OK, 1 row affected (0.15 sec)
mysql> insert into doNotSelectDuplicateValuesDemo(User_Name) values('Carol');
Query OK, 1 row affected (0.09 sec)
mysql> insert into doNotSelectDuplicateValuesDemo(User_Name) values('Carol');
Query OK, 1 row affected (0.17 sec)
mysql> insert into doNotSelectDuplicateValuesDemo(User_Name) values('Carol');
Query OK, 1 row affected (0.08 sec)
mysql> insert into doNotSelectDuplicateValuesDemo(User_Name) values('Sam');
Query OK, 1 row affected (0.28 sec)
mysql> insert into doNotSelectDuplicateValuesDemo(User_Name) values('Mike');
Query OK, 1 row affected (0.19 sec)
mysql> insert into doNotSelectDuplicateValuesDemo(User_Name) values('Bob');
Query OK, 1 row affected (0.16 sec)
mysql> insert into doNotSelectDuplicateValuesDemo(User_Name) values('David');
Query OK, 1 row affected (0.21 sec)
mysql> insert into doNotSelectDuplicateValuesDemo(User_Name) values('Maxwell');
Query OK, 1 row affected (0.13 sec)
mysql> insert into doNotSelectDuplicateValuesDemo(User_Name) values('Bob');
Query OK, 1 row affected (0.11 sec)
mysql> insert into doNotSelectDuplicateValuesDemo(User_Name) values('Ramit');
Query OK, 1 row affected (0.16 sec)

সকল রেকর্ড

mysql> select * from doNotSelectDuplicateValuesDemo;

আউটপুট (১১ রো, ডুপ্লিকেট সহ)

+---------+-----------+
| User_Id | User_Name |
+---------+-----------+
|       1 | John      |
|       2 | Carol     |
|       3 | Carol     |
|       4 | Carol     |
|       5 | Sam       |
|       6 | Mike      |
|       7 | Bob       |
|       8 | David     |
|       9 | Maxwell   |
|      10 | Bob       |
|      11 | Ramit     |
+---------+-----------+

ডুপ্লিকেট বাদ দিয়ে কোয়েরি

mysql> SELECT MIN(User_Id), User_Name FROM doNotSelectDuplicateValuesDemo GROUP BY User_Name;

আউটপুট (৮ রো, ইউনিক নাম)

+--------------+-----------+
| MIN(User_Id) | User_Name |
+--------------+-----------+
|            1 | John      |
|            2 | Carol     |
|            5 | Sam       |
|            6 | Mike      |
|            7 | Bob       |
|            8 | David     |
|            9 | Maxwell   |
|           11 | Ramit     |
+--------------+-----------+

বিকল্প: DISTINCT বা ROW_NUMBER() (MySQL 8.0+) ব্যবহার করেও করা যায়। MIN() পদ্ধতিটি পুরনো ভার্সনেও কাজ করে।

  1. MySQL-এ COUNT() এবং GROUP BY ব্যবহার করে ডুপ্লিকেট ID গণনা করা

  2. MySQL-এ EXISTS সাবকোয়েরি ব্যবহার করে অন্য টেবিলের সাথে ম্যাচ করা রো সিলেক্ট করা

  3. MySQL-এ নির্দিষ্ট কলাম থেকে শুধু 'NO' মান সংখ্যা বের করা

  4. MySQL-এ SUBSTRING_INDEX() দিয়ে হাইফেন-বিভক্ত স্ট্রিং আলাদা কলামে বির্ভক্ত করা