如何避免空表中的 “SELECT max(rank) FROM test” 返回空结果?
你可以将 COALESCE() 与聚合函数 MAX() 一起用于此目的。
语法如下所示
SELECT COALESCE(MAX(`yourColumnName`), 0) FROM yourTableName;
为了理解上述语法,让我们创建一个表格。创建表格的查询如下所示
mysql> create table avoidNullDemo -> ( -> `rank` int -> ); Query OK, 0 rows affected (0.53 sec)
使用 insert 命令在表中插入一些记录。
查询如下所示
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)
使用 select 语句显示表格中的所有记录。
查询如下所示
mysql> select *from avoidNullDemo;
以下是带有空值的结果
+------+ | 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; Query OK, 0 rows affected (0.92 sec)
现在上述表格是空的。让我们为这个空表执行上述查询
mysql> select COALESCE(MAX(`rank`), 0) FROM avoidNullDemo;
以下是结果
+--------------------------+ | COALESCE(MAX(`rank`), 0) | +--------------------------+ | 0 | +--------------------------+ 1 row in set (0.00 sec)
广告