을 병합 중첩 왼쪽 조인 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
그리고이 문제입니다 - 우리가
을 변경할 수 있습니다 경우 값 2가 어쨌든 때문에 (나는 그것을 할 수 있다고 생각 적어도 =) SUB4에 COALESCE) 의 NULL 일 수 없습니다SELECT sub3.key3, sub4.value2 FROM
손을 내 마음에 문제가
key1;key3;value2
1;1;1
있습니까 :
SELECT sub3.key3, value2 FROM
와
우리는 올바른 결과를 가지고 있습니까? 또는 버그입니까?
미리 감사드립니다.
테이블 정의와 데이터를 테이블에 게시하지 않으면 아무도이를 재현 할 수 없습니다. –
@ 피터 : 어떤 테이블 정의? 테이블이 없습니다. –
@listar, 비록 당신의 SQL이 정확히 이해하기가 쉽지 않더라도, 꽤 미친 결과입니다. 그러나 나는'value2 = 1'도 기대할 것입니다. 'COALESCE'를'CASE' 표현으로 표현해 보았습니까? –