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

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

MySQL-এ ডুপ্লিকেট রো মুছে শুধু একটি অনন্য রো রাখার জন্য অস্থায়ী টেবিল (temporary table) ব্যবহার করা হয়।

পদ্ধতি

  1. অনন্য রোগুলো নিয়ে একটি অস্থায়ী টেবিল তৈরি করুন।
  2. মূল টেবিল ট্রানকেট (খালি) করুন।
  3. অস্থায়ী টেবিল থেকে ডেটা মূল টেবিলে কপি করুন।
  4. অস্থায়ী টেবিল ড্রপ করুন।

সিনট্যাক্স

CREATE TABLE tempTable AS SELECT DISTINCT col1, col2 FROM yourTable;
TRUNCATE TABLE yourTable;
INSERT INTO yourTable(col1, col2) SELECT col1, col2 FROM tempTable;
DROP TABLE tempTable;

উদাহরণ

টেবিল তৈরি:

CREATE TABLE demo39 (
    user_id INT,
    user_name VARCHAR(20)
);

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

INSERT INTO demo39 VALUES (10, 'John');
INSERT INTO demo39 VALUES (10, 'John');
INSERT INTO demo39 VALUES (11, 'David');
INSERT INTO demo39 VALUES (11, 'David');

ডেটা (ডুপ্লিকেটসহ):

+---------+-----------+
| user_id | user_name |
+---------+-----------+
| 10      | John      |
| 10      | John      |
| 11      | David     |
| 11      | David     |
+---------+-----------+

ডুপ্লিকেট মুছে একটি রাখার কোয়েরি

CREATE TABLE temporaryTable AS SELECT DISTINCT user_id, user_name FROM demo39;
TRUNCATE TABLE demo39;
INSERT INTO demo39(user_id, user_name) SELECT user_id, user_name FROM temporaryTable;
DROP TABLE temporaryTable;

ফলাফল

+---------+-----------+
| user_id | user_name |
+---------+-----------+
| 10      | John      |
| 11      | David     |
+---------+-----------+

বিকল্প পদ্ধতি (MySQL 8.0+): ROW_NUMBER() উইন্ডো ফাংশন ব্যবহার করে:

WITH cte AS (
    SELECT *, ROW_NUMBER() OVER (PARTITION BY user_id, user_name ORDER BY user_id) AS rn
    FROM demo39
)
DELETE FROM demo39 WHERE (user_id, user_name) IN (SELECT user_id, user_name FROM cte WHERE rn > 1);

এটি আরও দক্ষ এবং একক স্টেটমেন্টে করা যায়।

  1. MySQL-এ DELETE স্টেটমেন্ট ব্যবহার করে নির্দিষ্ট সারি মুছে ফেলা

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

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

  4. MySQL-এ IS NULL ব্যবহার করে সিঙ্গেল রোতে NULL ভ্যালু চেক করা