我认为我想要达到的目标之前在这里以另一种形式被问过。但是我有一个稍微不同的要求,并且对我能做什么有更多的限制。
在这个简化的场景中:
CREATE TABLE backup_data AS SELECT a.*, b.*, c.*
FROM tbl_a a, tbl_b b, tbl_c c
WHERE a.aid = b.bid
AND b.cid = c.cid;
tbl_a
,tbl_b
并且tbl_c
有一些同名的列,当我尝试运行它时,Oracle 将返回一个重复的列名错误。
我希望的是有一些方法可以区分列名,以便尽管名称相同,我也可以插入它们。
我认为这可能通过连接别名来实现,例如:
CREATE TABLE backup_data AS SELECT a.* 'tbl_a_' || COLUMN_NAME, b.* 'tbl_b_' || COLUMN_NAME, c.* 'tbl_c_' || COLUMN_NAME
FROM tbl_a a, tbl_b b, tbl_c c
WHERE a.aid = b.bid
AND b.cid = c.cid;
我担心我已经知道唯一的解决方案是:
- 把它吸起来,用适当的别名手工写出 617 列名或
- 使用一些很棒的 PLSQL
不幸的是,在这个特定的例子中我没有 PLSQL 的奢侈,我也没有时间手工完成。
有没有其他方法可以实现这个创建为具有重复列名的选择?