Hi!
MySQL mag schon aus grundsätzlichen Gründen weder deine noch EKKis noch tomgks noch andere Versionen, die INSERT und ein SELECT auf die selbe Tabelle in einer Query vereinen. https://forum.selfhtml.org/?t=199108&m=1338630
http://dev.mysql.com/doc/refman/5.1/en/insert-select.html
“The target table of the INSERT statement may appear in the FROM clause of the SELECT part of the query. (This was not possible in some older versions of MySQL.) However, you cannot insert into a table and select from the same table in a subquery.”Bin mir gerade nicht sicher, wie das zu verstehen ist.
INSERT INTO tabelle SELECT ... FROM tabelle WHERE ...
müsste also nach der ersten Aussage inzwischen gehen, und nur die Verwendung echter Subqueries geht nicht ...?
Stimmt, den ersten Teil hatte ich überlesen. Während ich die Subquery-Varianten auch schön ausprobiert habe, hatte ich mir das beim INSERT...SELECT geschenkt. Mein Fehler. Das geht also doch ohne temporäre Tabelle.
Es bleibt jedoch dabei, dass eine Subquery nicht mag, und das aus zweierlei Gründen. Der erste ist oben erwähnt. Der zweite ist, dass VALUES(...) mehrere durch Komma getrennte Werte haben möchte - entsprechend der Anzahl der aufgeführten Felder vor dem VALUES() -, eine Subquery jedoch, auch wenn sie mehrere Werte liefert, diese syntaktische Bedingung nicht erfüllen kann. Lediglich eine einzelne Spalte könnte hier von einer Subquery geliefert werden, aber dann tritt Grund 1 in Kraft.
Lo!