Tuyên bố CẬP NHẬT của tôi đi theo các dòng:SQL - Cập nhật với câu lệnh CASE, tôi có cần phải lặp lại cùng một CASE nhiều lần không?
UPDATE customer
SET forenames=ot.forenames,
surname =
CASE WHEN ot.safeplace IS NULL
THEN 'test SAFEPLACE IS NULL'
ELSE 'test Safeplace IS NOT NULL'
END,
middlename =
CASE WHEN ot.safeplace IS NULL
THEN 'test2 SAFEPLACE IS NULL'
ELSE 'test2 Safeplace IS NOT NULL'
END,
FROM order_transaction ot
WHERE customer.custid = ot.custid
AND ot.trans_orderid = 5678
AND customer.custid = 1234
Các công trình trên. Về cơ bản nó kiểm tra nếu một trường trong bảng khác là NULL hay không, và sau đó cập nhật "họ của họ" và "middlename" cho phù hợp. Như bạn có thể thấy ở trên, tôi đã lặp lại cùng một câu lệnh CASE hai lần. Câu hỏi của tôi là - có cách nào tôi có thể chỉ định tuyên bố CASE chỉ một lần?
Vấn đề là, nếu tôi muốn cập nhật 10 trường dựa trên một điều kiện nhất định, tôi có cần bao gồm 10 điều kiện CASE tương tự không? Hoặc SQL có thể được cải thiện để chỉ có một CASE và 10 cập nhật trường trong mệnh đề WHEN/ELSE không?
(Tôi đang sử dụng cơ sở dữ liệu Postgresql 8.2 nhưng tôi tin rằng ở trên là SQL chuẩn).
Rất cám ơn, Rishi
Không thực sự là giải pháp tốt nhất Richard.Khi lựa chọn đầu tiên của bạn quét bảng và thêm kết quả và sau đó chọn lọc nó. –
@Dumitrescu Bogdan/Tôi không nghĩ rằng nó làm điều đó. Bởi vì PostgreSQL sẽ hủy truy vấn để áp dụng các bộ lọc vào truy vấn phụ, nhưng vẫn giữ khả năng sử dụng cột được xác định (được tính toán) – RichardTheKiwi
Cú pháp của OP không phải là tiêu chuẩn SQL (cũng lưu ý rằng tiêu chuẩn SQL là quốc tế và 'A' trong 'ANSI' là viết tắt của 'American' nên "SQL tuân thủ ISO" sẽ phù hợp hơn ở đây :) – onedaywhen