gpt4 book ai didi

MySQL - 为什么 null 和 if 为 null 时的结果不同?

转载 作者:太空宇宙 更新时间:2023-11-03 12:13:37 25 4
gpt4 key购买 nike

我有这样的查询:

SELECT IF(b.field IS NULL, c.field, b.field) as `field`
FROM aaaaa a
LEFT OUTER JOIN bbbbb b
ON b.uid = a.b_id
LEFT OUTER JOIN ccccc c
ON c.uid = a.c_id;

此查询有效。我的问题是,为什么前面的查询有效,而以下使用 CASE 的查询却不起作用:

SELECT 
CASE b.field
WHEN NULL THEN c.field
ELSE b.field
END as `field`
FROM aaaaa a
LEFT OUTER JOIN bbbbb b
ON b.uid = a.b_id
LEFT OUTER JOIN ccccc c
ON c.uid = a.c_id;

假设 aaaaa.b_idaaaaa.c_id 为空;从来没有,也从来没有。还假设 aaaaabbbbbccccc 之间的外键都已正确配置。 rehl x86_64 上的 mysql v5.1.60

第一个查询按预期正确返回了结果,但是当我使用 CASE 时,我只返回满足 ELSE 时的值(没有 c.fields 返回,只有 b.fields)。什么给了?

最佳答案

那是因为 case 的形式检查条件 b.field = null,你不能用这种方式比较空值。

改用这种形式的case:

CASE
WHEN b.field IS NULL THEN c.field
ELSE b.field
END as `field`

您还可以为此使用合并:

COALESCE(b.field, c.field) as `field`

或者ifnull:

IFNULL(b.field, c.field) as `field`

关于MySQL - 为什么 null 和 if 为 null 时的结果不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23145138/

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