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

แปลงค่าบวกเป็นลบขณะ INSERT ใน MySQL

คูณค่าด้วย -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 ต่างกัน