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

Làm cách nào để hàm SUM trong MySQL trả về '0' nếu không tìm thấy giá trị nào?

Sử dụng COALESCE để tránh kết quả đó.

SELECT COALESCE(SUM(column),0)
FROM   table
WHERE  ...

Để xem nó hoạt động, vui lòng xem sql fiddle này: http:// www .sqlfiddle.com / #! 2 / d1542 / 3/0

Thông tin thêm:

Cho ba bảng (một bảng có tất cả các số, một bảng có tất cả các giá trị rỗng và một bảng có hỗn hợp):

SQL Fiddle

Thiết lập lược đồ MySQL 5.5.32 :

CREATE TABLE foo
(
  id    INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  val   INT
);

INSERT INTO foo (val) VALUES
(null),(1),(null),(2),(null),(3),(null),(4),(null),(5),(null),(6),(null);

CREATE TABLE bar
(
  id    INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  val   INT
);

INSERT INTO bar (val) VALUES
(1),(2),(3),(4),(5),(6);

CREATE TABLE baz
(
  id    INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  val   INT
);

INSERT INTO baz (val) VALUES
(null),(null),(null),(null),(null),(null);

Truy vấn 1 :

SELECT  'foo'                   as table_name,
        'mixed null/non-null'   as description,
        21                      as expected_sum,
        COALESCE(SUM(val), 0)   as actual_sum
FROM    foo
UNION ALL

SELECT  'bar'                   as table_name,
        'all non-null'          as description,
        21                      as expected_sum,
        COALESCE(SUM(val), 0)   as actual_sum
FROM    bar
UNION ALL

SELECT  'baz'                   as table_name,
        'all null'              as description,
        0                       as expected_sum,
        COALESCE(SUM(val), 0)   as actual_sum
FROM    baz

Kết quả :

| TABLE_NAME |         DESCRIPTION | EXPECTED_SUM | ACTUAL_SUM |
|------------|---------------------|--------------|------------|
|        foo | mixed null/non-null |           21 |         21 |
|        bar |        all non-null |           21 |         21 |
|        baz |            all null |            0 |          0 |


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách thiết lập chuyển đổi dự phòng tự động cho cơ sở dữ liệu Moodle MySQL

  2. Làm thế nào để sử dụng câu lệnh đã chuẩn bị sẵn cho truy vấn chọn trong Java?

  3. Nhúng mysql vào ứng dụng java trên máy tính để bàn

  4. mysql thay đổi khóa duy nhất thành chính (mariadb)

  5. MySQL2 Ruby gem sẽ không cài đặt 10.6