【发布时间】:2014-12-03 17:15:39
【问题描述】:
我正在使用 Oracle SQL。我有 3 个表,每个表包含 80 个具有相同列名的列。我想将这些表加入到一个新表中,但由于命名重复,我应该会出错。
我不知道如何重命名 240 列。有没有其他解决办法?
这是我的桌子:
T1表
c1 int,
c2 int,
..
..
..
c80 int
T2表
c1 int,
c2 int,
..
..
..
c80 int
T3表
c1 int,
c2 int,
..
..
..
c80 int
这是我的加入:
Create table NewTable as
select *
from T1
inner join T2
on T1.id = T2.id
inner join T3
on T1.id = T3.id
这样的问题有解决办法吗?例如 - 呈现一个完整的列名,包括表名(t1.c1,t1.c2...)。
【问题讨论】:
-
用明确的 table.column 名称替换通配符并使用别名。
-
t3.id=t3.id 是可疑的。什么是确切的错误消息,因为 oracle 通常不关心重复的列名,它会附加 #s 但是考虑到它通常只是添加下一个数字 t2.c1 变为 t2.c11,但 t1.c11 已经存在......这可能是问题...在这种情况下,如果不重命名列或使用动态 SQL 视图或 cte,我认为如果您仍想执行 select *,那么您就不走运了
-
“t3.id=t3.id”是一个错字。我修好了它。无论如何,我收到“重复的列名错误”。未附加表名前缀。
标签: oracle join multiple-columns naming