Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

วิธีอัปเดตค่าตารางที่ 2 โดยบวกค่าจากตารางที่ 1 ใน MySQL

ใช้ 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 ดีกว่า