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

จะลบด้วย 1 ได้อย่างไรถ้าค่าฟิลด์> 0 ใน MySQL?


คุณสามารถใช้คำสั่ง CASE กับคำสั่ง UPDATE สำหรับสิ่งนี้ ให้เราสร้างตารางก่อน -

mysql> สร้างตาราง DemoTable (รหัส int ไม่ใช่ NULL AUTO_INCREMENT PRIMARY KEY, Value int); ตกลง ตกลง 0 แถวได้รับผลกระทบ (1.44 วินาที)

แทรกระเบียนในตารางโดยใช้คำสั่ง insert -

mysql> แทรกลงในค่า DemoTable(Value) (100) แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.47 วินาที)mysql> แทรกลงในค่า DemoTable(Value) (0) แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (4.16 วินาที) mysql> แทรกลงในค่า DemoTable(Value) (104); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.16 วินาที) mysql> แทรกลงในค่า DemoTable (ค่า) (0); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.15 วินาที) mysql> แทรกลงใน DemoTable ค่า (Value) (5); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.20 วินาที) mysql> แทรกลงในค่า DemoTable(Value) (10); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.24 วินาที) mysql> แทรกลงในค่า DemoTable (ค่า) (0);แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.18 วินาที)

แสดงบันทึกจากตารางโดยใช้คำสั่ง select -

mysql> เลือก *จาก DemoTable;

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

<ก่อนหน้า>+----+-------+| รหัส | ความคุ้มค่า |+---+-------+| 1 | 100 || 2 | 0 || 3 | 104 || 4 | 0 || 5 | 5 || 6 | 10 || 7 | 0 |+----+-------+7 แถวในชุด (0.00 วินาที)

ตอนนี้ใช้เพื่อตั้งค่าเงื่อนไขที่จะลบถ้าค่าของเขตข้อมูลมากกว่า 0 ถ้าค่าของเขตข้อมูล> 0 มิฉะนั้นให้ยังคงเหมือนเดิม -

mysql> อัปเดต DemoTable set Value=CASE WHEN Value> 0 THEN Value-1 ELSE 0 END; Query OK, 4 แถวได้รับผลกระทบ (0.25 วินาที) แถวที่ตรงกัน:7 เปลี่ยน:4 คำเตือน:0

ให้เราตรวจสอบบันทึกตารางอีกครั้ง -

mysql> เลือก *จาก DemoTable;

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

<ก่อนหน้า>+----+-------+| รหัส | ความคุ้มค่า |+---+-------+| 1 | 99 || 2 | 0 || 3 | 103 || 4 | 0 || 5 | 4 || 6 | 9 || 7 | 0 |+----+-------+7 แถวในชุด (0.00 วินาที)