Bạn có thể:
SELECT COALESCE(SUM(columnA), 0) FROM my_table WHERE columnB = 1
INTO res;
Điều này xảy ra hiệu quả, bởi vì truy vấn của bạn có một hàm tổng hợp và do đó luôn luôn trả về một hàng, ngay cả khi không tìm thấy gì trong bảng bên dưới.
Các truy vấn thuần túy không có tổng hợp sẽ trả về không có hàng trong trường hợp như vậy. COALESCE
sẽ không bao giờ được gọi và không thể cứu bạn. Trong khi xử lý một cột duy nhất, thay vào đó, chúng ta có thể bao bọc toàn bộ truy vấn:
SELECT COALESCE( (SELECT columnA FROM my_table WHERE ID = 1), 0)
INTO res;
Cũng hoạt động cho truy vấn ban đầu của bạn:
SELECT COALESCE( (SELECT SUM(columnA) FROM my_table WHERE columnB = 1), 0)
INTO res;
Tìm hiểu thêm về COALESCE()
trong sách hướng dẫn.
Tìm hiểu thêm về các chức năng tổng hợp trong sách hướng dẫn.
Thêm các lựa chọn thay thế trong bài đăng sau này:
- Cách trả về giá trị từ một hàm nếu không tìm thấy giá trị nào