Kopieren von Zeilen aus einer Tabelle in eine andere mit INSERT-Abfrage
Ich habe eine Tabelle mit 158 Säulen und 22.000 Zeilen und ich habe eine andere leere Tabelle, wo ich will einfügen-Werte dynamisch auf der Grundlage der WHERE-Bedingung aus der Benutzer. Die SELECT-Abfrage wie folgt Aussehen:
SELECT * FROM mygrist_tables WO suic_att>=5 UND Geschlecht='M'
Dies gibt mir etwa 9.000 Datensätze zurück (sagen). Ich einfügen wollen, diese Datensätze in einer anderen Tabelle (nur diese gefilterte Daten). Ist es möglich? Könnte jemand mir eine Idee, wie die INSERT-Abfrage Aussehen würde und ob ich brauche, um erstellen Sie eine weitere Tabelle mit all jenen 158 cloumns, oder könnten die INSERT-Abfrage dynamisch erstellen alle diejenigen, 158 Spalten? Auch, könnte ich dies tun, indem Sie eine view oder eine Tabelle werden wesentliche? Vielen Dank im Voraus!
Könnten Sie mir eine Abfrage, die als solche bitte?
Nein, ich denke, dass Sie funktionieren könnte.
InformationsquelleAutor Sharadha Jayaraman | 2013-03-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Klingt es wie Sie wollen, führen Sie die oben
SELECT
Anweisung undINSERT
die Ergebnisse in eine neue Tabelle, die nicht vorhanden ist. Wenn dem so ist, sollte dies funktionieren:Vorausgesetzt YourNewTable bereits existierte, dann würden Sie benötigen, um ausführen EINFÜGEN IN:
Optional können Sie müssen die Spalten angeben, die in Sie sind nicht das gleiche.
BEARBEITEN - Wiederlesen Kommentare und Realisierung von DB ist MySQL, erstellen Sie eine neue Tabelle aus einer SQL-Anweisung, die Sie verwenden sollten:
http://dev.mysql.com/doc/refman/5.0/en/create-table.html
INSERT INTO YourNewTable (Col1,Col2,etc.) SELECT Col1,Col2,etc... -- müssen Sie die Spalte-Namen in diesem Fall leider... viel Glück.
Alle 158 Spalten? 🙁
Und müsste ich neu erstellen Sie, alle 158 Spalten in der neuen Tabelle?
Ihre Kommentare sind leider nicht machen Sinn-so haben Sie entweder eine vorhandene Tabelle, in dem Fall müssen Sie die Verwendung von INSERT INTO, oder Sie weiß nicht wo Sie verwenden können, WÄHLEN Sie * IN. Wenn Sie WÄHLEN Sie * IN, es wird das erstellen der Tabelle/Spalten für Sie. Könnte einfacher sein, dies zu tun, und fügen Sie die neue Spalte. Wenn nicht, können Sie diese Abfrage verwenden, um alle Ihre Spalten-Namen (so dass Sie nicht haben, geben Sie Sie alle aus): wählen Sie " group_concat(column_name) from information_schema.Spalten, in denen table_name = 'yourtable'. Viel Glück!
InformationsquelleAutor sgeddes
Können Sie mithilfe der SELECT INTO-syntax
Aber Sie können nicht in einfügen einer Tabelle, die bereits existiert wie die. Wenn die Tabelle bereits vorhanden ist, verwenden Sie
Was ich meinte war, dass die @sgeddes erwähnt in seiner Antwort,... Sie hätten die Liste aus den Spalten, ob die Tabelle, die Sie auswählen, die unterscheidet sich von der Tabelle, die Sie einfügen in. Wenn Sie identisch sind, können Sie verwenden *
Was hier wirklich nervt. Ich bin in einer ähnlichen Zwangslage, in die Sie manuell eingeben aus 50 verschiedenen Spaltennamen scheint wie eine dumme Erwartung von MySQL. Ich denke, percona - ändern-Werkzeug ist das einzige, was noch Sinn macht in dieser Welt.
Eine mysql - (oder richtig -) Tabelle mit 50+ collumns scheint seine ganz eigene Art dumm zu.
InformationsquelleAutor rbedger