gpt4 book ai didi

mysql - 为什么 COALESCE() 不起作用?

转载 作者:行者123 更新时间:2023-11-29 04:38:59 25 4
gpt4 key购买 nike

这是我的查询:

select COALESCE(t1.col1, 0) from table1 t1 where table2.id = t1.col2

所以,输出有时是空的。为什么?我使用 COALESCE() 只是因为如果结果为空,它会使用 0 代替。我该如何解决?

注意:COALESCE() 也适用于此查询:

select COALESCE(sum(t1.col1), 0) from table1 t1 where table2.id = t1.col2

编辑:其实我想说的是:如果没有结果(no row founded)返回0

最佳答案

如果这是您的查询:

select COALESCE(t1.col1, 0)
from table1 t1
where id = 10;

然后当没有匹配时它不会返回任何行。如果你知道你想要一行,你可以使用聚合:

select COALESCE(MAX(t1.col1), 0)
from table1 t1
where id = 10;

这保证返回一行并且不会为 NULL。另一种方法使用 union all:

select t1.col1
from table1 t1
where id = 10
union all
select 0
from table1 t1
where not exists (select 1 from table1 where id = 10);

或者,换一种方式:

select coalesce((select col1 from table1 where id = 10),
0)

在此上下文中,缺少的行被转换为标量 NULL 值,因此 COALESCE() 可以处理它。

请注意:COALESCE() 工作正常。您需要意识到它适用于列值。当没有返回时,它无法产生一行。

关于mysql - 为什么 COALESCE() 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33849603/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com