对于空表,如何避免“ 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)