Oracle给出了列名

时间:2011-06-29 06:34:24

标签: sql oracle

我有2个表,有2列(user_id和year)。

查询1:

SELECT * FROM table_1 t1 
FULL JOIN table_2 t2 ON t1.user_id=t2.user_id AND t1.year=t2.year

生成以下列名:

user_id, year, user_id_1, year_1

QUERY2:

CREATE TABLE table_copy AS SELECT * FROM
(SELECT * FROM table_1 t1 
 FULL JOIN table_2 t2 ON t1.user_id=t2.user_id  AND t1.year=t2.year);

生成以下模糊的列名:

QCSJ_C000000000400000, QCSJ_C000000000400002, QCSJ_C000000000400001, QCSJ_C000000000400003

是否有一种简短的方法可以强制Oracle query2使用与query1相同的名称而无需明确编写它们(当有很多列时这很重要)?也许有些Oracle设置?

2 个答案:

答案 0 :(得分:5)

列出您的列并使用AS指定列名。

e.g。

CREATE TABLE table_copy AS
SELECT t1.user_id AS t1_user_id,
       t1.year    AS t1_year,
       t2.user_id AS t2_user_id,
       t2.year    AS t2_year
FROM   table_1 t1
FULL   JOIN table_2 t2 ON t1.user_id=t2.user_id
AND    t1.year=t2.year;

答案 1 :(得分:0)

我没有完全理解您的预期部分,但我理解的是您想要table_1或table_2中的所有列

如果只是这样,你可以使用以下查询创建表..

CREATE TABLE table_copy AS SELECT * FROM 
    (SELECT t1.* FROM table_1 t1 FULL JOIN table_2 t2 
      ON t1.user_id=t2.user_id  
      AND t1.year=t2.year); 

或者如果你想要两个表的列但在sql中使用不同的名称,那么你必须只遵循 cagcowboy 建议的查询....

但您可以在plsql中创建带有“t1_”前缀的表,而无需指定或写入所有列名..