Computer >> Máy Tính >  >> Lập trình >> MySQL

Làm cách nào để tránh kết quả rỗng của bài kiểm tra "SELECT max (xếp hạng) FROM" cho một bảng trống?

Bạn có thể sử dụng COALESCE () cùng với hàm tổng hợp MAX () cho việc này.

Cú pháp như sau

SELECT COALESCE(MAX(`yourColumnName`), 0) FROM yourTableName;

Để hiểu cú pháp trên, chúng ta hãy tạo một bảng. Truy vấn để tạo bảng như sau

mysql> create table avoidNullDemo
   -> (
   -> `rank` int
   -> );
Query OK, 0 rows affected (0.53 sec)

Chèn một số bản ghi vào bảng bằng lệnh chèn.

Truy vấn như sau

mysql> insert into avoidNullDemo values(10);
Query OK, 1 row affected (0.20 sec)
mysql> insert into avoidNullDemo values(NULL);
Query OK, 1 row affected (0.18 sec)
mysql> insert into avoidNullDemo values(20);
Query OK, 1 row affected (0.17 sec)
mysql> insert into avoidNullDemo values(NULL);
Query OK, 1 row affected (0.11 sec)
mysql> insert into avoidNullDemo values(100);
Query OK, 1 row affected (0.11 sec)
mysql> insert into avoidNullDemo values(NULL);
Query OK, 1 row affected (0.16 sec)

Hiển thị cho bạn tất cả các bản ghi từ bảng bằng cách sử dụng câu lệnh select.

Truy vấn như sau

mysql> select *from avoidNullDemo;

Sau đây là đầu ra với giá trị NULL

+------+
| rank |
+------+
| 10   |
| NULL |
| 20   |
| NULL |
| 100  |
| NULL |
+------+
6 rows in set (0.00 sec)

Đây là truy vấn để tránh kết quả rỗng

mysql> select COALESCE(MAX(`rank`), 0) FROM avoidNullDemo;

Sau đây là kết quả

+--------------------------+
| COALESCE(MAX(`rank`), 0) |
+--------------------------+
| 100                      |
+--------------------------+
1 row in set (0.00 sec)

Đây là trường hợp khi bảng trống.

Hãy để chúng tôi xóa tất cả các bản ghi khỏi bảng trên.

Truy vấn như sau

mysql> truncate table avoidNullDemo;
Query OK, 0 rows affected (0.92 sec)

Bây giờ bảng trên là trống. Hãy để chúng tôi triển khai truy vấn trên cho bảng trống

mysql> select COALESCE(MAX(`rank`), 0) FROM avoidNullDemo;

Sau đây là kết quả

+--------------------------+
| COALESCE(MAX(`rank`), 0) |
+--------------------------+
| 0                        |
+--------------------------+
1 row in set (0.00 sec)