2017-06-15 3 views
1

Ich möchte eine neue Tabelle als Ergebnis der Vereinigung von zwei Tabellen ohne Duplikate erstellen. Ich suchte in stackoverflow und ich fand eine Frage mit genau was ich will aber mysql Create a new table from merging two tables with union verwenden.Erstellen Sie eine neue Tabelle aus Union zwei Tabellen mit Union in Postgres

Lösung in MySQL

CREATE TABLE new_table 
    SELECT * FROM table1 
    UNION 
    SELECT * FROM table2; 

Ich habe versucht, etwas Ähnliches zu tun, aber ich habe:

SQL-Fehler.

Ich möchte dies erreichen, wenn es möglich ist mit einer Anweisung ähnlich wie mysql.

Ich weiß, dass wenn Sie eine neue Tabelle zuerst mit den Feldern erstellen, die ich möchte. Ich kann über die Vereinigung dieser Tabellen eine Auswahl in diese Tabelle vornehmen. Wenn es keine andere Option gibt, muss ich so etwas tun.

Aber in Zusammenfassung Wenn möglich, etwas Ähnliches wie die Frage mit MySQL in Postgres zu tun. Ich mochte syntaktischen Zucker verwenden, das zu tun,

Vielen Dank im Voraus

aktualisiert

Um

TABLE1(id,field1,field2,field3) 
TABLE2(id,field1,field2,field3) 

und die Tabelle Ich habe zwei Tabelle mit gleicher Struktur zu verdeutlichen, dass Ich möchte

TABLE3(id,field1,field2,field3) 

Hinweis, dass ich versuchte

CREATE TABLE new_table as 
    SELECT * FROM table1 
    UNION 
    SELECT * FROM table2; 

und es funktioniert, aber nicht die Felder an der richtigen Stelle zum Beispiel field3 von Tisch 1 in Feld 1 von table_result

+1

Werfen Sie einen Blick auf: https://stackoverflow.com/questions/22953450/postgres-create-table-from-select – McNets

+1

@McNets Dank viel ich nur fehlt Stellen Sie, wie Sie dies beantworten Ich gehe zu akzeptieren, im Grunde war diese Antwort für mich nützlich https://StackOverflow.com/a/22953921/2399444 – Cyberguille

+0

@McNets In meinem Fall beachten Sie, dass ich nicht in meinem neuen duplizieren möchte Tabelle, ich habe eine Spalte ID – Cyberguille

Antwort

2

Sie vermissen das AS Stichwort gelegt hat:

CREATE TABLE new_table 
AS 
    SELECT * FROM table1 
    UNION 
    SELECT * FROM table2;

Wenn Sie die Spalten in einer bestimmten Reihenfolge benötigen, geben sie dann in der Auswahl:

CREATE TABLE new_table 
AS 
SELECT id, column1, column2, column3 
FROM table1 
UNION 
SELECT id, column1, column2, column3 
FROM table2; 

Weitere Angaben im Handbuch:
https://www.postgresql.org/docs/current/static/sql-createtableas.html

+0

Ist in Ordnung, aber bitte überprüfen Sie mein Update – Cyberguille

+0

Ich denke, dass die Reihenfolge der Auswahl ist wichtig – Cyberguille

+1

@Cyberguille: siehe mein Update, müssen Sie angeben Spalten explizit.Ein anderes gutes Beispiel dafür, warum 'select *' sollte vermieden werden –