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

MySQL-এ UPDATE JOIN ব্যবহার করে অন্য টেবিল থেকে ডেটা আপডেট করা

MySQL-এ একটি টেবিলের ডেটা অন্য টেবিলের ডেটা দিয়ে আপডেট করতে UPDATE ... JOIN সিনট্যাক্স ব্যবহার করা হয়।

উদাহরণ

সোর্স টেবিল (demo54) - সম্পূর্ণ ডেটা:

CREATE TABLE demo54 (firstName VARCHAR(20), lastName VARCHAR(20));
INSERT INTO demo54 VALUES ('John', 'Smith'), ('John', 'Smith'), ('David', 'Smith');

টার্গেট টেবিল (demo55) - lastName NULL:

CREATE TABLE demo55 (firstName VARCHAR(20), lastName VARCHAR(20));
INSERT INTO demo55(firstName) VALUES ('John'), ('David'), ('Bob');

আপডেটের আগে demo55:

+-----------+----------+
| firstName | lastName |
+-----------+----------+
| John      | NULL     |
| David     | NULL     |
| Bob       | NULL     |
+-----------+----------+

আপডেট কোয়েরি

UPDATE demo55 tbl1
JOIN demo54 tbl2 ON tbl1.firstName = tbl2.firstName
SET tbl1.lastName = tbl2.lastName;

আপডেটের পর demo55:

+-----------+----------+
| firstName | lastName |
+-----------+----------+
| John      | Smith    |
| David     | Smith    |
| Bob       | NULL     |
+-----------+----------+

ব্যাখ্যা:

  • JOIN demo54 tbl2 ON tbl1.firstName = tbl2.firstName - firstName মিলে যাওয়া রোগুলো জয়িন করে।
  • SET tbl1.lastName = tbl2.lastName - demo55-এর lastName কলাম আপডেট হয়।
  • John (২টি রো demo54-এ) -> demo55-এর John রো আপডেট হয়েছে (lastName = 'Smith')।
  • David -> আপডেট হয়েছে।
  • Bob -> demo54-এ নেই, তাই আপডেট হয়নি (NULL থাকে)।
  • Rows matched: 2 Changed: 2 - ২টি রো ম্যাচ, ২টি পরিবর্তন।

সতর্কতা: যদি demo54-এ একই firstName-এ একাধিক ভিন্ন lastName থাকে, তবে আপডেট অনির্ধারিত (নন-ডিটারমিনিস্টিক) হবে। সেক্ষেত্রে LIMIT 1 বা এগгреগেশন ব্যবহার করুন।

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

  2. MySQL-এ ভিন্ন কলাম वाले টেবিলে ডেটা কপি করা (INSERT INTO SELECT)

  3. MySQL-এ একটি স্কিমা থেকে অন্য স্কিমায় ডেটা কপি করা

  4. MySQL-এ একটি টেবিল থেকে অন্য টেবিলে ডেটা ইনসার্ট করা