我有以下查询
SELECT DISTINCT
pt.incentive_marketing,
pt.incentive_channel,
pt.incentive_advertising
FROM test.pricing pt
WHERE pt.contract_id = 90000
group by 1,2,3
order by pt.incentive_marketing;
Run Code Online (Sandbox Code Playgroud)
上面的查询返回o/p,如附图所示
但是我想使用COALESCE将所有空值替换为0 请让我知道如何在上面的SELECT查询中实现这一点
现在我使用coalesce进一步修改了查询,如下所示
SELECT
COALESCE( pt.incentive_marketing, '0' ),
COALESCE(pt.incentive_channel,'0'),
COALESCE( pt.incentive_advertising,'0')
FROM test.pricing pt
WHERE pt.contract_id = 90000
group by 1,2,3
Run Code Online (Sandbox Code Playgroud)
其结果如图2所示.
我仍然收到一行空白值
如果知道列的结果只有两个候选值,
ifnull(a, b) as a_or_b_1
Run Code Online (Sandbox Code Playgroud)
和
coalesce(a, b) as a_or_b_2
Run Code Online (Sandbox Code Playgroud)
会给出相同的结果.但哪个更快?在搜索时我发现了这篇文章,其中说ifnull更快.但这是我找到的唯一一篇文章.对此有何看法?
提前致谢 :)