programing

'on clause'에 알 수 없는 열(열 별칭이 오류를 일으키는 것 같습니다.)

lovejava 2023. 10. 1. 19:01

'on clause'에 알 수 없는 열(열 별칭이 오류를 일으키는 것 같습니다.)

MariaDB 10.2.15에서 작동했던 쿼리가 있습니다. MariaDB 10.3.7로 업그레이드한 후 이 쿼리는 더 이상 작동하지 않고 왜 그런지 모르겠습니다.

쿼리는 다음과 같습니다.

WITH
 table_1 AS (SELECT id AS 'first_id' FROM some_table),
 table_2 AS (select id AS 'second_id' FROM another_table)
SELECT *
FROM table_1 
LEFT OUTER JOIN table_2 ON table_1.first_id = table_2.second_id
UNION
SELECT *
FROM table_1
RIGHT OUTER JOIN table_2 ON table_1.first_id = table_2.second_id

이 쿼리를 실행하려고 하면 오류가 발생합니다.Unknown column 'table_2.second_id' in 'on clause'. 쿼리(합류열에서 별칭 제거)를 이와 같이 수정하면(아래 참조) 모든 것이 정상적으로 작동하기 때문에 이상해집니다.

WITH
 table_1 AS (SELECT id FROM some_table),
 table_2 AS (select id FROM another_table)
SELECT *
FROM table_1 
LEFT OUTER JOIN table_2 ON table_1.id = table_2.id
UNION
SELECT *
FROM table_1
RIGHT OUTER JOIN table_2 ON table_1.id = table_2.id

편집 1: 쿼리를 이것으로 변경하려고 했지만 여전히 작동하지 않습니다.

WITH
 table_1 AS (SELECT id AS `first_id` FROM some_table),
 table_2 AS (select id AS `second_id` FROM another_table)
SELECT *
FROM table_1 
LEFT OUTER JOIN table_2 ON table_1.first_id = table_2.second_id
UNION
SELECT *
FROM table_1
RIGHT OUTER JOIN table_2 ON table_1.first_id = table_2.second_id

편집 2: 꽤 확신합니다.first_id열이 존재하는 이유는 아래 쿼리를 실행하면 검색된 결과에서 원하는 열을 볼 수 있기 때문입니다.제 앨리어싱된 제 칼럼이 Left OUTER JOIN 과정에서 분실된 것 같습니다.

WITH
 table_1 AS (SELECT id AS `first_id` FROM some_table),
 table_2 AS (select id AS `second_id` FROM another_table)
SELECT *
FROM table_1

언급URL : https://stackoverflow.com/questions/50766797/unknown-column-in-on-clause-column-alias-is-probably-causing-error