我有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设置?
答案 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_”前缀的表,而无需指定或写入所有列名..