gpt4 book ai didi

mysql - 内部联接后如何获取空值?

转载 作者:可可西里 更新时间:2023-11-01 08:02:52 25 4
gpt4 key购买 nike

我有这样的结构:

Table A -- |id_A | field_1a | id_B | value_A|

Table B -- |id_B | field_1b | field_2b | value_B|

Table C -- |field_1c | id_D | id_A|

Table D -- |id_D | description|

我想得到一个返回的查询:

-- 值A,如果此值为null,则返回其在B中的值。

-- 表 D 到表 C 的描述。如果行不在 C 中,则返回 null。

我完成了第一部分,但我卡在了第二部分。据我所知,这是我的查询:

select a.id_A
if (VALOR_b is null, VALOR_a, VALOR_b) as valor,
d.description
from A a inner join B b
on a.id_B = b.id_B
inner join C c
on c.id_A = A.id_A
inner join D d
on d.id_D = c.D

正如我所说,我得到的是第一部分,只是我可以通过 C 交叉的值,但是当我可以在查询的前一部分中交叉它们时,我需要一个空值。

希望我能解释清楚。请问我任何疑问。提前致谢。

最佳答案

CD 使用 left join
如果您使用 SQL 标准 coalesce() 而不是 if (),您的生活也会更轻松:

select
a.id_A,
coalesce(VALOR_a, VALOR_b) as valor,
d.description
from A a
join B b on a.id_B = b.id_B
left join C c on c.id_A = A.id_A
left join D d on d.id_D = c.D

Left join 如果没有匹配的行,仍然返回父表中的一行,在这种情况下,它返回连接表中的所有空值"

coalesce() 接受任意数量的参数并返回第一个非空值。

关于mysql - 内部联接后如何获取空值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46501585/

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