2017-09-14 71 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; 

现在,问题是错误:列“sec_col”列多次指定。 但是,当我删除sec_col加入条件,并只做base_col,一切都很好。我认为我需要创建一个别名,但不知道如何。

+1

我不知道PostgreSQL语法,但是 DROP TABLE IF EXISTS ** _ temp_table **; CREATE TABLE TEMP AS _temp_table SELECT * FROM ** _ ** temp_table看起来 奇怪,我 –

+0

@RaphaelMüllner 我的错误,同时输入 – jovicbg

+0

你尝试加入_temp_table但再参考temp_table(不包括第一个下划线) – verhie

回答

2

我认为问题是两个连接表中都有一个sec_col列。尝试用select column1, column2, ...替换select *

通常避免select *是一种很好的做法,因为它在表定义更改时可能会导致错误。

+0

为sec_col创建别名。非常感谢您,我在连接时改变表的顺序,然后选择列,而不是选择*。 – jovicbg