我在3个具有大量字段的表上进行了联接。联接后由于列名重复而不断出错。使用别名尚未为我解决问题。
有没有一种方法可以在加入之前删除重复的列。我无力选择必填列。
create temp table ashresults
as
select *
from gp p
inner join gv v on p.fd1 = v.fd1
inner join gdc duc on p.id = duc.id
where cast(v.rt as int) >= 1000
and cast(v.cn as date ) >= '2016-07-01'
此语句给出了错误
答案 0 :(得分:1)
fd1列存在于多个表中,因此您必须选择table.column_name,否则将引发错误
select p.*,duc.*,gv.*
from gp p
inner join gv v on p.fd1 = v.fd1
inner join gdc duc on p.id = duc.id
where cast(v.rt as int) >= 1000
and cast(v.cn as date ) >= '2016-07-01'
答案 1 :(得分:1)
如果唯一重复的列是用于join
条件的列和 id
仅在p
和duc
中,则您可以使用using
:
select *
from gp p join
gv v
using (fd1) join
gdc duc
using (id)
where cast(v.rt as int) >= 1000 and
cast(v.cn as date ) >= '2016-07-01';