2012-04-14 16 views
1

Ich habe zwei Tabellen und brauchen Top-Kopie eines an einen anderen INSERT INTO tbl_new SELECT FROM tbl_oldInsert aus einer anderen Schwester Tabelle mit einem zusätzlichen Feld

haben sie beide 3 exakt gleichen Spalten, aber tbl_new hat 4. Spalte „Typ“ bezeichnet, wie kann ich es bevölkern in derselben Abfrage.

brauche ich Reihe von tbl_old kopieren und zuordnen Wert Zelle "Typ"

INSERT INTO tbl_new SELECT FROM tbl_old, (type) values (floor(rand() * 10)) 

nicht

Antwort

1

Say tbl_old hat zwei Spalten und tbl_new hat

tbl_old 
colA | colB 

tbl_new 
colA | colB | colC 

Es seien drei funktioniert Sie möchten colC mit der Summe von colA- und colB-Werten füllen.

INSERT INTO tbl_new (colA, colB, colC) SELECT colA,colB,(colA+colB) FROM tbl_old; 

In Ihrem Beispiel: Damit können Sie

INSERT INTO tbl_new (colA, colB, colC) SELECT colA,colB,floor(rand()*10) FROM tbl_old; 
1

Versuchen Sie unter:

INSERT INTO tbl_new (column1,column2,column3,type) 
SELECT column1,column2,column3,floor(rand() * 10) FROM tbl_old 

Hinweis: ersetzen column1, column1.column3 mit Spaltennamen.

0

Diese obigen Antworten sind korrekt, aber stellen Sie sich die Zeit vor, die mit dem Schreiben von Spalten verbracht wird, wenn bis auf die zusätzliche Spalte alles identisch ist.

Hier ist eine viel sauberere Abfrage, wenn die Tabellen, um mit zusätzlichen Spalte am Ende identisch sind:

INSERT INTO tbl_new SELECT *, floor(rand()*10) FROM tbl_old; 
Verwandte Themen