[英]Oracle given column names
我有 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
查询2:
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 设置?
列出您的列并使用 AS 指定列名。
例如
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;
我没有完全理解您的预期部分,但我理解的是您只想要 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_”的表,而无需指定或写入所有列名。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.