2017-02-08 8 views
0

포함 문제가되지 않습니다. 나에게 모호한 오류를 왜주지 않는지 이해하지 못한다.내가이보다 저 작은 더 큰 쿼리를 별칭

나는이 작업의 확인을 수행 할 수 있습니다

SELECT * 
FROM (
     SELECT ap.car_id, rs.car_id 
     FROM avl_pool ap 
     JOIN route_sources rs 
     ON  ap.avl_id = rs.avl_id_begin 
    ) T 

을하지만이 줄 날이 모호 나는 각 필드에 별칭을 포함하지만, 내가 말한대로 많이있다 할 수 물론 car_id

SELECT car_id 
FROM (
    SELECT ap.car_id, rs.car_id 
    FROM avl_pool ap 
    JOIN route_sources rs 
     ON  ap.avl_id = rs.avl_id_begin 
    ) T 

열. 별칭을 포함하지 않고 열을 참조 할 수 있습니까? 그들은 같은 가치를 지니고있어 어느 것이 실제로 사용되는지 신경 쓰지 않습니다.

+0

내가 하위 쿼리를 믿거나 가입하면 [같은 이름의 열] –

+1

을 선택할 수 없습니다. https://www.postgresql.org/message-id/4701.1100730185%40sss.pgh.pa.us –

답변

2

쿼리의 select 부분의 열 이름이 고유 일 필요는 없지만 (예 : 표현식이나 다른 (하위) 쿼리의) 열에 대한 참조가 모호하지 않아야하기 때문입니다.

그래서 다음과 같은 문장은 OK입니다 : 그러나

select id, somecolumn as id from test 
--> OK. 

, 다음 쿼리가 작동하지 않습니다, id라는 이름의 열에 대한 참조가 명확 첫 번째 또는 서브 쿼리의 두 번째 열 중 하나에 바인딩 할 수 없기 때문에 :

다음 열이 (아마도 모호한) 이름에 의해 참조되지 않기 때문에 select *...이 작동합니다
select id from (select id, somecolumn as id from test) t2 

--> "42702: column reference "id" is ambiguous" 

참고 :

select * from (select id, somecolumn as id from test) t2 
--> OK. 
관련 문제