Đó 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ừ đó?