MySQL:选择与 Coalesce 仍然返回 null

问题描述

我对 COALESCE 的理解是它返回第一个非空值。我在下面的 select 语句中使用了 COALESCE,但它仍然返回 null。我该如何解决或有更好的方法

SET NEW.random = ( SELECT 合并(动物) 发件人列表 ORDER BY RAND() LIMIT 1 );

数据库小提琴:this regex demo

解决方法

您似乎对 COALESCE 函数有误解!使用此函数时,您可以使用多列作为参数,例如 COALESCE(col1,col2,col3)。如果使用多个列作为参数,它将返回第一个非空值。要了解,请参阅 SQL Here

More detail here

根据您的评论,我认为您正在寻找这个:

SELECT animals from list where animals is not null ORDER BY RAND() LIMIT 1
,

你不需要COALESCE()
只需从表 NULL 中过滤掉 list

SET NEW.random = ( SELECT animals
                   FROM list
                   WHERE animals IS NOT NULL
                   ORDER BY RAND() LIMIT 1 );

在您的 fiddle 中查看结果。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...