MySQL - Tips und Tricks
UPDATE mit Werten aus anderer Tabelle aus: http://www.tutorials.de/forum/relationale-datenbanken-sql-mysql-oracle-db2-mssql/174881-mysql-update-mit-werten-aus-anderer-tabelle.html
Datum des Zugriffs: 4.4.2008
zunächst mal: Updates über mehrere Tabellen sind grundsätzlich "tricky" (siehe dazu die MySQL-Doku, speziell die Kommentare).
Dann: Der Tabellen-Name "order" ist nicht sehr empfehlenswert, da der Interpreter diesen Namen gerne mit dem ORDER BY verwechselt, ergo muss der Tabellenname order immer als `order` geschrieben werden, sonst droht Syntax-Error.
Ein weiteres Problem ist die Gruppen-Funktion MIN() ohne GROUP BY.
So, jetzt 2 Lösungsvorschläge, einmal mit SubQuery (ab MySQL 4.1): Code:
UPDATE user AS u LEFT JOIN (SELECT uid, MIN(datum) AS mindatum FROM `order` GROUP BY uid) AS o ON u.id = o.uid SET u.createDate = o.mindatum
und einmal mit temporärer Tabelle (MySQL 4.0 und früher): Code:
DROP TABLE IF EXISTS tmp_order; CREATE TEMPORARY TABLE tmp_order TYPE = HEAP SELECT uid, MIN(datum) AS mindatum FROM `order` GROUP BY uid; UPDATE user LEFT JOIN tmp_order ON user.id = tmp_order.uid SET user.createDate = tmp_order.mindatum; DROP TABLE IF EXISTS tmp_order;