Hi!
Ich dachte zuerst da es ja auch ein INSERT .. SELECT gibt. müsste es ja auch bei einem Update gehen.
Im Handbuch zu INSERT...SELECT steht auch, was MySQL anstellt, damit das geht. Dies macht es bei Subquerys (noch) nicht (selbständig).
Ich hatte die Fehlermeldung nicht ganz verstanden bzw. im deutschen MySQL Manual stand es nicht ganz so eindeutig:
"Zurzeit können Sie in einer Unterabfrage keine Aktualisierungsoperation in einer Tabelle durchführen und gleichzeitig eine Auswahl in einer anderen Tabelle treffen. "
Ja, das ist irgendwie nicht verständlich. Wieder ein Grund, Dokumentationsübersetzungen möglichst zu meiden. (Das Verstehen von englischen Texten mag zwar dem einen oder anderen schwerfallen, doch wenn man es nicht übt, kann es auch nicht leichter werden.)
wie im englischen drin:
"Currently, you cannot update a table and select from the same table in a subquery. "
Das currently bezieht sich darauf, dass es vielleicht in einer zukünftigen Version möglich sein könnte. Das Problem daran ist, dass eben zunächst speicherintensiv eine temporäre Tabelle erstellt werden muss. Ansonsten gibt es unter Umständen ein Dilemma, wenn das Update Daten ändert und damit das Selektionsergebnis der Subquery ändert. Wie auch immer, derzeit führt kein Weg daran vorbei, die Abfrage umzugestalten. Den Trick mit der temporären Tabelle kann man ja auch zu Fuß gehen.
Lo!