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

MySQL-এ ডুপ্লিকেট রেকর্ড মুছে একটি রেখে রাখুন

SELF JOIN সহ DELETE ব্যবহার করুন

ডুপ্লিকেট রেকর্ডগুলো মুছে শুধু একটি রেখে রাখতে DELETE t1 FROM table t1 JOIN table t2 ON t1.dup_col = t2.dup_col AND t1.id > t2.id প্যাটার্ন ব্যবহার করুন।

উদাহরণ: টেবিল ও ডুপ্লিকেট ডেটা

mysql> CREATE TABLE DemoTable (
    StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    StudentName VARCHAR(40)
);
mysql> INSERT INTO DemoTable(StudentName) VALUES('John'),('Carol'),('Sam'),('Carol'),('David'),('Carol');

ডুপ্লিকেট সহ (Carol ৩ বার):

+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
| 1         | John        |
| 2         | Carol       |
| 3         | Sam         |
| 4         | Carol       |
| 5         | David       |
| 6         | Carol       |
+-----------+-------------+

ডুপ্লিকেট মুছে একটি রাখুন

mysql> DELETE tbl1 FROM DemoTable tbl1, DemoTable tbl2 
    WHERE tbl1.StudentName = tbl2.StudentName AND tbl1.StudentId > tbl2.StudentId;
Query OK, 2 rows affected (0.79 sec)

ফলাফল (Carol-এর প্রথম রেকর্ড রক্ষা):

+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
| 1         | John        |
| 2         | Carol       |
| 3         | Sam         |
| 5         | David       |
+-----------+-------------+

বিকল্প (MySQL 8.0+): WITH cte AS (SELECT StudentId, ROW_NUMBER() OVER (PARTITION BY StudentName ORDER BY StudentId) AS rn FROM DemoTable) DELETE FROM DemoTable WHERE StudentId IN (SELECT StudentId FROM cte WHERE rn > 1);। এটি আরও পঠনীয় এবং পারফরম্যান্স ভালো।

  1. MySQL-এ NULL এবং NOT NULL রেকর্ড প্রদর্শন করা একটি নির্দিষ্ট মান বাদ দিয়ে

  2. MySQL-এ LIMIT 1 ব্যবহার করে ডুপ্লিকেট রেকর্ড থেকে শুধু একটি ডিলিট করুন

  3. MySQL에서 중복 이름의 점수 합계 구하기 (GROUP BY SUM)

  4. MySQL-এ নির্দিষ্ট মানের চেয়ে বড় মানগুলো সিলেক্ট করা