Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách sử dụng If Then Else trong truy vấn cập nhật MySQL?

Tôi nghĩ bạn đã ở đó 99%:

UPDATE table
SET A = IF(A > 20, 20, IF(A < 20 && A > 1, A, 0))
WHERE A IS NOT NULL;

Thêm && A > 1 đến câu lệnh IF thứ hai và điều kiện thứ ba của bạn được thỏa mãn.

Chỉnh sửa:

Theo nhận xét của @ Andre cho câu hỏi và gợi ý rằng IF lồng nhau khó đọc, bạn cũng có thể thực hiện việc này dưới dạng một số truy vấn không thực hiện bất kỳ công việc nào không cần thiết và có thể đọc được:

UPDATE table SET A = 20 WHERE A > 20;
UPDATE table SET A = 0 WHERE A <= 1;

Khi A là NULL, nó sẽ không đáp ứng một trong hai điều kiện này và do đó loại bỏ sự cần thiết phải chỉ định rằng A không phải là NULL.

Tiếp theo, không cần điều kiện thứ ba như @Andre đã đề xuất. Nếu A nằm trong khoảng từ 1 đến 20, nó được để nguyên.

Cuối cùng, đặt A thành 0 trong đó A nhỏ hơn hoặc bằng 1 có vẻ không bình thường. Các giá trị của 1 sẽ được thay đổi thành 0. Nếu bạn chỉ định đặt các giá trị nhỏ hơn 1 (bao gồm cả giá trị âm) thành 0, thì bạn nên hoán đổi < cho <= .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để lưu trữ ngày tháng bằng đơn vị mili giây trong Mysql?

  2. Làm cách nào để đối số thứ hai của Round () hoạt động với các cột?

  3. MySQLi PHP:Kiểm tra xem truy vấn SQL INSERT có hoàn toàn thành công khi sử dụng MySQLi hay không

  4. Thứ tự MySQL PHP theo nhiều cột

  5. MYSQL Ngày Thời gian Tròn đến Giờ Gần nhất