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

Câu lệnh MySQL CASE ... WHERE ... THEN

Đó không phải là CASE phải có nhiều hơn một, WHEN...THEN , đó là nó phải xử lý tất cả dữ liệu bạn cung cấp cho nó.

Nếu bạn loại bỏ một trong các mệnh đề, bạn sẽ để lại một lỗ hổng. ví dụ:

UPDATE partsList SET quantity =  
CASE
  WHEN partFK = 1 THEN 4
END
WHERE buildFK = 1;

Với câu lệnh cập nhật này, if parkFK là 2, sau đó cập nhật không thành công vì CASE không thể xử lý đầu vào.

Bạn có thể giới hạn dữ liệu nguồn của mình bằng cách thêm một dòng khác vào mệnh đề where (ví dụ:AND partFK in (1,2) ), hoặc bạn có thể thêm ELSE vào biểu thức chữ hoa.

UPDATE partsList SET quantity =  
CASE
  WHEN partFK = 1 THEN 4
  WHEN partFK = 2 THEN 8
  ELSE 12 
END
WHERE buildFK = 1;

Tuy nhiên, dựa trên câu lệnh SQL mà bạn đã trình bày, có lẽ có một cách tốt hơn. Có lẽ, partFK là một khóa ngoại cho một số bảng khác. Bạn có thể lấy giá trị cho quantity không từ đó?



  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 để Django hoạt động với MySQL trong XAMPP?

  2. Làm cách nào để bạn kết nối với nhiều cơ sở dữ liệu MySQL trên một trang web?

  3. Cách tính phần trăm cột trong MySQL

  4. Chỉ trả lại một hàng từ bảng ngoài cùng bên phải cho mọi hàng trong bảng ngoài cùng bên trái

  5. Sắp xếp chuỗi truy vấn không gian địa lý:tìm n điểm gần nhất với một vị trí