2016-04-11 16 views
3

Ich habe eine temporäre Tabelle, die ich erstellt habe, um genau zu einer vorhandenen Tabelle zu passen.Unbekannte Spalte der temporären Tabelle in der Feldliste

create temporary table all_plants_temp SELECT * from all_plants; 

Mein Ziel ist es, Änderungen an der temporären Tabelle all_plants_temp Übertragung in die ursprüngliche Tabelle bei Bedarf zu haben. Um dies zu tun, habe ich versucht, die ursprüngliche Tabelle zu aktualisieren und seine Spalten gleich denen der temporären Tabelle zu setzen.

update all_plants set all_plants.symbol = all_plants_temp.symbol...(followed by the other columns)...; 

Dadurch mir folgende Fehler geben:

Error Code: 1054. Unknown column 'all_plants_temp.symbol' in 'field list' 

ich eine Reihe von erfolglosen Variationen dieses Codes ausprobiert habe. Da ich immer noch ein Neuling bin, denke ich, dass ich ein konzeptionelles Missverständnis habe, aber trotz der Suche nach allem kann ich meinen Fehler nicht finden. Jede Hilfe wäre willkommen.

EDIT: Ich vergaß zu erwähnen, dass die folgende Abfrage funktioniert

select symbol from all_plants_temp; 
+0

Es sieht nicht wie Sie erstellt die temporäre Tabelle korrekt. Du hättest 'CREATE TABLE all_plants_temp LIKE all_plants' und dann' INSERT all_plants_temp benutzen SELECT * FROM all_plants ' – WillardSolutions

+0

hast du die richtige Bedingung in' where 'Klausel gesetzt? Vielleicht gibt es mehr als einen passenden Datensatz. – Mahmoud

Antwort

2

Sie dies durch DROP tun konnte und CREATE Tabelle wieder etwas wie unten:

drop table all_plants; 

create table all_plants SELECT * from all_plants_temp; 
+0

Dies ist keine gute Lösung, wenn Sie eine große Anzahl von Datensätzen in der Tabelle haben und einige von ihnen seit dem letzten Update geändert wurden – Mahmoud

+0

Vielen Dank! Das funktioniert wunderbar und viel schneller als ich erwartet hatte. Haben Sie eine Idee, warum mein ursprünglicher Code fehlerhaft ist? – squared

+0

@squared glücklich zu wissen, dass es Ihnen hilft. Sie können diese Antwort aufheben und akzeptieren, indem Sie auf tic klicken. Wie auch immer, ich bin mir nicht sicher, warum dein altes nicht funktioniert. Ich vermute etwas Problem in Ihrer Syntax. –

Verwandte Themen