Ich habe zwei Datenbanken: Zeus und Hades. Beide Datenbanken haben ein Feld namens wxrecord. Auf Hades ist der wxrecord ein Unix-Zeitstempel.MYSQL UPDATE mit verschachtelten SELECT aus verschiedenen Datenbanken
Ich erstelle einen neuen Datensatz in zeus.alldata mit einem SELECT/INSERT von hades.wxdata. Dies beinhaltet den wxrecord von hades.wxdata.
Sobald der neue Datensatz auf zeus.alldata erstellt wurde, muss ich einige mathematische Berechnungen ausführen und dann eine einzelne Spalte mit der Ausgabe dieser Berechnung aktualisieren.
Ich möchte Zeus aktualisieren, aber nur den spezifischen Datensatz auf Zeus aktualisieren, der dem entsprechenden Datensatz in hades entspricht. Ich möchte den maximalen wxrecord auf beiden zusammenbringen und updaten, solange sie gleich sind. Hier
ist, was ich versucht habe:
UPDATE zeus.alldata SET A='50' WHERE (SELECT max(wxrecord) FROM zeus.alldata) = (SELECT max(wxrecord) FROM hades.wxdata);
ich diesen Fehler erhalte:
ERROR 1093 (HY000): You can't specify target table 'alldata' for update in FROM clause
Jede Hilfe
Im Allgemeinen können Sie nicht ein und dieselbe Tabelle innerhalb einer Abfrage wie UPDATE und SELECT. Sie können versuchen, 'INNER JOIN' von' alldata' Tabelle in die Abfrage zu machen. Sehen Sie mehr hier: http://Stackoverflow.com/questions/4268416/sql-update-with-sub-query-that-references-the-same-table-in-mysql – mitkosoft