บทนำ
สามารถคำนวณค่าจากคอลัมน์อื่นๆ และอัปเดตลงในคอลัมน์เป้าหมายได้ในคำสั่ง UPDATE เดียว โดยใช้ตัวดำเนินการคณิตศาสตร์มาตรฐาน
ตัวอย่างการสร้างตาราง
mysql> CREATE TABLE DemoTable (
-> Number1 INT,
-> Number2 INT,
-> AddResult INT,
-> MinusResult INT,
-> MultiplyResult INT,
-> DivideResult INT
-> );
Query OK, 0 rows affected (0.89 sec)
เพิ่มข้อมูลทดสอบ
mysql> INSERT INTO DemoTable(Number1, Number2) VALUES(40, 20);
แสดงข้อมูลก่อนอัปเดต
mysql> SELECT * FROM DemoTable;
ผลลัพธ์
+---------+---------+-----------+-------------+----------------+--------------+
| Number1 | Number2 | AddResult | MinusResult | MultiplyResult | DivideResult |
+---------+---------+-----------+-------------+----------------+--------------+
| 40 | 20 | NULL | NULL | NULL | NULL |
+---------+---------+-----------+-------------+----------------+--------------+
1 row in set (0.00 sec)
คำสั่ง UPDATE คำนวณทั้ง 4 ดำเนินการ
mysql> UPDATE DemoTable SET AddResult = (Number1 + Number2);
Query OK, 1 row affected (0.22 sec)
mysql> UPDATE DemoTable SET MinusResult = (Number1 - Number2);
Query OK, 1 row affected (0.08 sec)
mysql> UPDATE DemoTable SET MultiplyResult = (Number1 * Number2);
Query OK, 1 row affected (0.08 sec)
mysql> UPDATE DemoTable SET DivideResult = (Number1 / Number2);
Query OK, 1 row affected (0.07 sec)
ตรวจสอบผลลัพธ์
mysql> SELECT * FROM DemoTable;
ผลลัพธ์
+---------+---------+-----------+-------------+----------------+--------------+
| Number1 | Number2 | AddResult | MinusResult | MultiplyResult | DivideResult |
+---------+---------+-----------+-------------+----------------+--------------+
| 40 | 20 | 60 | 20 | 800 | 2 |
+---------+---------+-----------+-------------+----------------+--------------+
1 row in set (0.00 sec)
รวมใน UPDATE เดียว (มีประสิทธิภาพกว่า)
UPDATE DemoTable SET
AddResult = Number1 + Number2,
MinusResult = Number1 - Number2,
MultiplyResult = Number1 * Number2,
DivideResult = Number1 / Number2;
ตัวดำเนินการคณิตศาสตร์ใน MySQL
| Operator | ความหมาย | ตัวอย่าง | ผลลัพธ์ |
|---|---|---|---|
| + | บวก | 10 + 5 | 15 |
| - | ลบ | 10 - 5 | 5 |
| * | คูณ | 10 * 5 | 50 |
| / | หาร (ได้ทศนิยม) | 10 / 4 | 2.5 |
| DIV | หารแบบจำนวนเต็ม | 10 DIV 4 | 2 |
| % หรือ MOD | หารเอาเศษ | 10 % 3 | 1 |
ข้อควรระวัง
- การหารด้วย 0 จะได้ NULL (ไม่ Error)
- ชนิดข้อมูลผลลัพธ์ขึ้นกับ Operand (INT + INT = INT, INT + DECIMAL = DECIMAL)
- ใช้ CAST() หากต้องการควบคุมชนิดข้อมูลผลลัพธ์