2017-11-07 13 views
0

Ich verwende folgende Anweisung, um eine doppelte Tabelle mit Daten zu erstellen. Aber ich bin gespannt, ob diese Anweisung die Spaltenreihenfolge der old_table in der new_table unverändert beibehält. Da ich einige Spaltendaten von 2 Tabellen später mit MINUS-Anweisung vergleichen muss.Erstellt Create Table as Select die Spaltenreihenfolge in Oracle?

CREATE TABLE new_table 
AS 
SELECT * 
FROM old_table 

Unten ist die Minus-Anweisung zum Vergleich verwendet. In der folgenden Anweisung werden Spalten aus der Metadatentabelle ALL_TAB_COLUMNS abgefragt.

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

Unten ist die Metadatenabfrage, um Spaltenliste in der Reihenfolge zu erhalten.

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

Meine Frage, die beide new_table und OLD_TABLE wenn oben mit CREATE TABLE new_table AS SELECT-URL kopiert Spaltenreihenfolge in konserviert?

Antwort

2

Ja, die neue Tabelle wird Spalten genau in der gleichen Reihenfolge wie Ihre select Abfrage haben.

+0

Können Sie mir eine Referenz oder einen Test geben, den ich als Proof-Note verwenden kann? Auch wenn ich das getestet habe und es funktioniert wie gesagt für meine Szenarien. Stellen Sie sicher, dass dies auf keinen Fall falsch funktioniert. :) – PraAnj

+0

Ich kann keinen negativen Testfall erzeugen. Für meine Arbeit verwende ich CTAS regelmäßig und es funktioniert so. :) –

+0

Danke für die Antwort. – PraAnj

Verwandte Themen