คูณค่าด้วย -1 ขณะ INSERT จากตารางอื่น
สร้างตารางต้นทาง (ค่าบวก)
mysql> CREATE TABLE recordsDemo (
-> UserId INT,
-> Value INT
-> );
mysql> INSERT INTO recordsDemo VALUES(1,10), (3,598), (5,786), (7,189), (9,345);
แสดงข้อมูลต้นทาง
mysql> SELECT * FROM recordsDemo;
ผลลัพธ์:
+--------+-------+ | UserId | Value | +--------+-------+ | 1 | 10 | | 3 | 598 | | 5 | 786 | | 7 | 189 | | 9 | 345 | +--------+-------+
สร้างตารางปลายทาง
mysql> CREATE TABLE PositiveToNegativeValueDemo (
-> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Money INT
-> );
INSERT พร้อมแปลงค่าบวกเป็นลบ (-1 * Value)
mysql> INSERT INTO PositiveToNegativeValueDemo(Id, Money)
-> SELECT UserId, (-1 * Value) FROM recordsDemo;
Query OK, 5 rows affected (0.15 sec)
ตรวจสอบผลลัพธ์
mysql> SELECT * FROM PositiveToNegativeValueDemo;
ผลลัพธ์:
+------+-------+ | Id | Money | +------+-------+ | 1 | -10 | | 3 | -598 | | 5 | -786 | | 7 | -189 | | 9 | -345 | +------+-------+
วิธีอื่นๆ
SELECT UserId, -Value FROM recordsDemo(unary minus)SELECT UserId, 0 - Value FROM recordsDemo- ใช้ใน Trigger:
SET NEW.money = -NEW.amount;
กรณีใช้งานจริง
- ระบบบัญชี: รายจ่ายเป็นลบ รายรับเป็นบวก
- ระบบสต็อก: สินค้าออกเป็นลบ สินค้าเข้าเป็นบวก
- โอนย้ายข้อมูลระหว่างระบบที่มี sign convention ต่างกัน