对于空表,如何避免“ SELECT max(rank)FROM test”的空结果?

您可以将其COALESCE()与聚合函数一起使用MAX()

语法如下

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

为了理解上述语法,让我们创建一个表。创建表的查询如下

mysql> create table avoidNullDemo
   -> (
   -> `rank` int
   -> );

使用insert命令在表中插入一些记录。

查询如下

mysql> insert into avoidNullDemo values(10);
mysql> insert into avoidNullDemo values(NULL);
mysql> insert into avoidNullDemo values(20);
mysql> insert into avoidNullDemo values(NULL);
mysql> insert into avoidNullDemo values(100);
mysql> insert into avoidNullDemo values(NULL);

使用select语句显示表中的所有记录。

查询如下

mysql> select *from avoidNullDemo;

以下是带有NULL值的输出

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

这是避免空结果的查询

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

以下是输出

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

当表为空时就是这种情况。

让我们删除上表中的所有记录。

查询如下

mysql> truncate table avoidNullDemo;

现在上表为空。让我们实现上述查询空表

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

以下是输出

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