MySQL:Select Coalesce 仍然返回 null

MySQL: Select with Coalesce still returning null

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

SET NEW.random = ( SELECT 合并(动物) FROM列表 按 RAND() 排序 (LIMIT 1);

DB Fiddle: https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=aca780246b24ec4cce8d9978c1113d26

看来你对COALESCE函数的理解有误!在使用此函数时,您可以使用多个列作为参数,如 COALESCE(col1, col2, col3)。它 returns 在使用多个列作为参数的情况下的第一个非空值。了解请看SQL Here

More detail here

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

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

你不需要COALESCE()
只需从 table list:

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

在您的 fiddle 中查看结果。