问题描述
我对 COALESCE 的理解是它返回第一个非空值。我在下面的 select 语句中使用了 COALESCE,但它仍然返回 null。我该如何解决或有更好的方法?
SET NEW.random = ( SELECT 合并(动物) 发件人列表 ORDER BY RAND() LIMIT 1 );
解决方法
您似乎对 COALESCE
函数有误解!使用此函数时,您可以使用多列作为参数,例如 COALESCE(col1,col2,col3)
。如果使用多个列作为参数,它将返回第一个非空值。要了解,请参阅 SQL 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 中查看结果。