我对 postgresql 中的嵌套左连接有一个奇怪的问题......这很难解释,但很容易显示 =) 我们在这里:
SELECT * FROM
(
SELECT 1 as key1
) sub1
LEFT JOIN
(
SELECT sub3.key3, sub4.value2 FROM
(
SELECT 1 as key3
) sub3
LEFT JOIN
(
SELECT sub5.key5, COALESCE(sub6.value1, 1) as value2
FROM
(
SELECT 1 as key5
) sub5
LEFT JOIN
(
SELECT 1 as key6, value1
FROM
(
SELECT NULL::integer as value1
) sub7
WHERE false
) sub6 ON false
)
sub4 ON sub4.key5=sub3.key3
)
sub2 ON sub1.key1 = sub2.key3
此查询的结果:
key1;key3;value2
1;1;NULL
这就是问题所在 - value2 不能为 NULL,因为 sub4 中的 COALESCE (至少我认为它不能是 =))无论如何,如果我们要改变
SELECT sub3.key3, sub4.value2 FROM
和
SELECT sub3.key3, value2 FROM
我们会得到正确的结果:
key1;key3;value2
1;1;1
我的思想和手有什么问题吗?或者它是一个错误?
提前致谢!