2017-09-14 3 views
0

PostgreSQL 쿼리가 있습니다. 여기에서 다른 임시 테이블과 테이블을 조인하여 임시 테이블을 생성합니다.PostgreSQL에서 두 개의 열로 두 개의 데이터 세트를 결합하십시오.

DROP TABLE IF EXISTS other_temp_table; 
CREATE TEMP TABLE other_temp_table AS 
    SELECT * 
     FROM base.main_data 
     WHERE period_start_time::DATE >= '2017-06-20' AND period_start_time::DATE <= '2017-07-26'; 
------------------------------------------------------------------------------------------------------------------------ 
DROP TABLE IF EXISTS first_temp_table; 
CREATE TEMP TABLE first_temp_table AS 
SELECT * 
    FROM _temp_table 
LEFT JOIN base."UL_parameters" 
     ON temp_table.base_col::INT = base."UL_parameters".base_col::INT 
     and temp_table.sec_col::INT= base."UL_parameters".sec_col::INT; 

이제 오류는 'ERROR : column "sec_col이 두 번 이상 지정되었습니다. 그러나 sec_col 조인 조건을 삭제하고 base_col 만 수행하면 모든 것이 정상입니다. 별칭을 만들 필요가 있다고 생각하지만 어떻게할지는 모르겠습니다.

+1

PostgreSQL 구문을 모르지만 DROP TABLE IF EXISTS ** _ temp_table **; 는 임시 테이블의 _temp_table을 만들 때 SELECT * FROM ** _ temp_table ** 는 RaphaelMüllner 내 실수 당신은 –

+0

에 이상한 보인다 ,하지만 그게 문제가 아니에요, 나는 원본 구문을 복사 할 수 없기 때문에 그것이 NDA를하고 입력 한 다음 실수로 만들었습니다. base.UL_parameters에서 sec_col의 별명을 작성하는 방법을 잘 모르겠습니다. – jovicbg

+0

를 입력하는 동안 @ 나 – verhie

답변

2

두 테이블 모두에 sec_col 열이있는 것이 문제라고 생각합니다. select *select column1, column2, ...으로 바꾸십시오.

select *은 일반적으로 테이블 정의가 변경 될 때 오류를 유발할 수 있으므로 피해야합니다.

+0

대단히 고맙습니다. 조인 할 때 테이블의 순서를 변경하고 선택할 때 *를 선택하지 마십시오. – jovicbg

관련 문제