【问题标题】:Does Create Table as Select preserves columns order in Oracle?Create Table as Select 是否保留 Oracle 中的列顺序?
【发布时间】:2018-04-19 11:01:41
【问题描述】:

我正在使用以下语句来创建包含数据的重复表。但我很想知道这个语句是否保留了 new_table 中 old_table 的列顺序。由于我需要稍后使用 MINUS 语句比较 2 个表的一些列数据。

CREATE TABLE new_table
AS
SELECT *
FROM old_table

下面是用于比较的减号语句。在以下语句中,cols 是从 ALL_TAB_COLUMNS 元数据表中查询的。

SELECT COUNT(*) FROM (SELECT cols FROM old_table MINUS (SELECT cols FROM new_table))

以下是按顺序获取列列表的元数据查询。

SELECT COLUMN_NAME FROM ALL_TAB_COLUMNS WHERE TABLE_NAME = 'new_table'
SELECT COLUMN_NAME FROM ALL_TAB_COLUMNS WHERE TABLE_NAME = 'old_table'

我的问题,当使用上面提到的 CREATE TABLE new_table AS SELECT 语句复制时,列顺序是否保留在 new_table 和 old_table 中?

【问题讨论】:

    标签: sql oracle select compare create-table


    【解决方案1】:

    是的,新表的列顺序与您的 select 查询的顺序完全相同。

    【讨论】:

    • 你能提供任何我可以用作证明说明的参考或测试吗?即使我已经对此进行了测试,并且它按照您对我的场景所说的那样工作。想要确保这在任何情况下都不会正常工作。 :)
    • 我不能产生任何负面的测试用例。对于我的工作,我定期使用 CTAS,它就是这样工作的。 :)
    • 感谢您的回答。
    猜你喜欢
    • 2013-06-29
    • 2010-11-27
    • 1970-01-01
    • 2013-12-27
    • 1970-01-01
    • 2020-11-27
    • 1970-01-01
    • 2020-02-08
    • 1970-01-01
    相关资源
    最近更新 更多