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(...)লিখতে হয়।