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

MySQL-এ UPDATE JOIN দিয়ে একটি টেবিল থেকে অন্য টেবিলে কলাম মান কপি করা (ID ম্যাচ করে)


Multi-table UPDATE ... JOIN সিনট্যাক্স দিয়ে ID ম্যাচ করে মান কপি

MySQL-এ UPDATE table1, table2 SET table2.col = table1.col WHERE table2.id = table1.id সিনট্যাক্স ব্যবহার করে দুটি টেবিলের ID ম্যাচ করিয়ে একটি কলামের মান অন্য টেবিলে কপি করা যায়।

টেবিল ১ (DemoTable1) - সোর্স

mysql> CREATE TABLE DemoTable1 (PersonId INT, Value INT);
mysql> INSERT INTO DemoTable1 VALUES(100,78), (101,67), (102,89);

টেবিল ২ (DemoTable2) - ডেস্টিনেশন (NULL মানসহ)

mysql> CREATE TABLE DemoTable2 (StudentId INT, StudentScore INT);
mysql> INSERT INTO DemoTable2 VALUES(100,NULL), (102,NULL);

আপডেটের আগে

DemoTable1:          DemoTable2:
+----------+-------+   +-----------+--------------+
| PersonId | Value |   | StudentId | StudentScore |
+----------+-------+   +-----------+--------------+
| 100      | 78    |   | 100       | NULL         |
| 101      | 67    |   | 102       | NULL         |
| 102      | 89    |   +-----------+--------------+

UPDATE JOIN কোয়েরি

mysql> UPDATE DemoTable1, DemoTable2 
SET DemoTable2.StudentScore = DemoTable1.Value 
WHERE DemoTable2.StudentId = DemoTable1.PersonId;
Query OK, 2 rows affected (0.13 sec)

আপডেটের পর (DemoTable2)

+-----------+--------------+
| StudentId | StudentScore |
+-----------+--------------+
| 100       | 78           |
| 102       | 89           |
+-----------+--------------+

ব্যাখ্যা

  • UPDATE t1, t2 SET t2.col = t1.col WHERE t2.id = t1.id — MySQL-স্পেসিফিক মাল্টি-টেবিল আপডেট সিনট্যাক্স।
  • শুধু ম্যাচ করা রো আপডেট হয় (১০১ নেই DemoTable2-তে, তাই স্কিপ)۔
  • ANSI SQL-এ UPDATE t2 SET col = (SELECT col FROM t1 WHERE t1.id = t2.id) WHERE EXISTS(...) লিখতে হয়।
  1. MySQL-এ ভিন্ন কলাম वाले টেবিলে ডেটা কপি করা (INSERT INTO SELECT)

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

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

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