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

MySQL-এ ডুপ্লিকেট রেকর্ড রিপ্লেস করার দক্ষ পদ্ধতি: INSERT ON DUPLICATE KEY UPDATE

MySQL-এ ডুপ্লিকেট রেকর্ড হ্যান্ডেল করার সবচেয়ে দক্ষ উপায় হলো INSERT ON DUPLICATE KEY UPDATE ব্যবহার করা। এটি ডুপ্লিকেট কী পাওয়া গেলে নতুন রো ইনসার্ট না করে এক্সিস্টিং রো আপডেট করে, ফলে এরর এড়ানো যায়।

উদাহরণ

১. ইউনিক কনস্ট্রেইন্ট সহ টেবিল তৈরি করুন

mysql> CREATE TABLE DemoTable (
    -> Id INT,
    -> Name VARCHAR(20),
    -> UNIQUE(Id, Name)
    -> );

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

mysql> INSERT INTO DemoTable VALUES(101, 'Chris') ON DUPLICATE KEY UPDATE Id=10001, Name='Robert';
mysql> INSERT INTO DemoTable VALUES(102, 'Mike') ON DUPLICATE KEY UPDATE Id=10001, Name='Robert';
mysql> INSERT INTO DemoTable VALUES(101, 'Chris') ON DUPLICATE KEY UPDATE Id=10001, Name='Robert';

নোট: তৃতীয় কোয়েরি ডুপ্লিকেট কী (101, 'Chris') পাওয়ায় এক্সিস্টিং রো আপডেট করেছে।

৩. রেকর্ড দেখুন

mysql> SELECT * FROM DemoTable;

আউটপুট:

+-------+--------+
| Id    | Name   |
+-------+--------+
| 102   | Mike   |
| 10001 | Robert |
+-------+--------+

ব্যাখ্যা: প্রথম দুটি ইনসার্ট সফল হয়েছে। তৃতীয়টি ডুপ্লিকেট কী (101, 'Chris') পাওয়ায় ON DUPLICATE KEY UPDATE ক্লজটি এক্সিস্টিং রোকে (Id=10001, Name='Robert') আপডেট করেছে। ফলে টেবিলে মোট ২টি রো রইল। এই পদ্ধতিটি `REPLACE INTO` বা `INSERT IGNORE` চেয়ে বেশি নিয়ন্ত্রণ দেয়।

  1. MySQL-এ STR_TO_DATE() ব্যবহার করে ডেট রেকর্ড ইনসার্ট/রূপান্তর করা

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

  3. MySQL-এ একাধিক টেবিল থেকে ডেটা নিয়ে একটি টেবিলে ইনসার্ট করা (CROSS JOIN)

  4. MySQL-এ একক INSERT স্টেটমেন্টে একাধিক রো দ্রুত ইনসার্ট করা