繁体   English   中英

Oracle 给定列名

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM