ใช้ User Variable เก็บค่าจากตารางแรก แล้ว UPDATE ตารางที่สอง
อ่านค่าจากตารางแรกเก็บใน @variable (Session Variable) แล้วนำไปใช้ใน UPDATE ตารางที่สอง
ตัวอย่างสร้างตาราง 2 ตาราง
CREATE TABLE DemoTable1 (value INT); CREATE TABLE DemoTable2 (value1 INT); INSERT INTO DemoTable1 VALUES (10); INSERT INTO DemoTable2 VALUES (50), (100);
ข้อมูลตาราง 1
+-------+ | value | +-------+ | 10 | +-------+
ข้อมูลตาราง 2
+--------+ | value1 | +--------+ | 50 | | 100 | +--------+
คำสั่งอัปเดต: บวกค่าจากตาราง 1 เข้าไปในทุกแถวของตาราง 2
SET @myValue = (SELECT value FROM DemoTable1); UPDATE DemoTable2 SET value1 = value1 + @myValue;
ข้อมูลหลังอัปเดต
+--------+ | value1 | +--------+ | 60 | | 110 | +--------+
คำอธิบาย:
SET @myValue = (SELECT value FROM DemoTable1);กำหนดค่า Session Variable (ต้องคืนค่า 1 แถว 1 คอลัมน์)UPDATE DemoTable2 SET value1 = value1 + @myValue;ใช้ Variable ในนิพจน์คำนวณ
วิธีมาตรฐาน (Standard SQL) ใช้ Subquery/JOIN:
UPDATE DemoTable2 d2 CROSS JOIN (SELECT value FROM DemoTable1) d1 SET d2.value1 = d2.value1 + d1.value;
⚐ ข้อควรระวัง:
- Session Variable (@var) คงค่าตลอด Connection เฉพาะ Session นั้น
- Subquery ใน SET ต้องคืนค่า 1 แถว 1 คอลัมน์ (Scalar Subquery)
- วิธี JOIN/Subquery ทำงานใน Statement เดียว Atomic ดีกว่า