oracle掉桌还在那里

时间:2017-03-14 13:49:59

标签: oracle plsql

我创建了一个表作为选择。 A栏,B栏,C栏 然后我放弃它,即使使用purge命令。 我添加了一个B2列 A栏,B栏,B2栏,C栏 并将Create表作为Select命令运行。 当我查询Select * from newtable i get

A栏,B栏,C栏,B2栏 怎么样?为什么?为什么在我创建它的地方没有B2列,B& C.这很令人头疼,因为我真的有一个包含75列的表,我想查看前面附近的数据。谢谢。

create table NewTable1 nologging parallel 8 compress as 
SELECT ColA, ColB, ColC from table;

DROP TABLE NewTable1  PURGE;

create table NewTable1 nologging parallel 8 compress as 
SELECT ColA, ColB, ColB2, ColC from table;

2 个答案:

答案 0 :(得分:0)

表DDL和您的CTAS查询将使我们更容易为您提供帮助。

但您可以查看表格的all_tab_columns。该视图中包含列COLUMN_ID,它是确定在查询表时未显示列顺序时列的显示方式的列。它是创建表时指定的列的顺序。

因此,除非您指定列顺序,否则新表将按照原始表中存在的顺序排列。

举例来说:

    CREATE TABLE qazz
    (
     a      NUMBER
    ,b      NUMBER
    ,c      NUMBER
    ,b2     DATE
    );

CREATE TABLE qazz_2 AS SELECT * FROM qazz;

CREATE TABLE qazz_3 AS SELECT a, b, b2, c FROM qazz;

SELECT table_name, column_name, column_id 
    FROM all_tab_columns 
    WHERE table_name LIKE 'QAZZ%' 
    ORDER BY table_name, column_id;

答案 1 :(得分:0)

我必须为我的项目添加另一列,所以我再次删除/清除,但这次我注意到我在SQL DEVELOPER中,CTAS在一个选项卡中,而drop语句在另一个选项卡中。他们都使用表格前面的模式名称,但这次我做了DROP& SQL Developer中来自同一选项卡的CTAS,然后我从另一个选项卡查询,所有列都按正确的顺序排列。所以??也许它是一个sql开发人员或会话问题?