MySQL UPDATE mit INNER AUSWÄHLEN
Ich möchte so etwas wie dies tun, aber es scheint, dass ich gerade nicht kann:
UPDATE products p2
SET
manufacturer =
(
SELECT manufacturer
FROM products p, manufacturers m, etc.
WHERE
...other stuff...
p.name LIKE CONCAT('%',m.name,'%')
AND p.id = p2.id
)
WHERE manufacturer = 0
Den Fehler:
#1093 - Sie können nicht angeben, Ziel-Tabelle 'p2' for update in FROM-Klausel
Das problem ist, dass ich einen Hersteller-Feld in der Tabelle, aber einige der manufactureres Namen sind in der product_name-string statt dem Feld Hersteller, so habe ich, um die Hersteller-id durch die product_name und Aktualisierung der Produkt-Tabelle der Hersteller-id.
Konnte dies in zwei Schritten, aber id wie zu tun dies in einem.
- UND p.id = p2.id, was p2 hier??
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einen Kommentar bezüglich dieser gleichen Fehler bei http://dev.mysql.com/doc/refman/5.0/en/subquery-errors.html sagt, "MySQL erlaubt es nicht, AKTUALISIEREN oder LÖSCHEN von Daten einer Tabelle, wenn man gleichzeitig liest, dass die gleichen Daten mit einer Unterabfrage."
Versuchen, diese Abfrage -
...aber Erstens überprüfen Sie, dass die Datensätze verknüpft sind korrekt -
Sehen, ob diese Art der Abfrage funktioniert für Sie
Müssen Sie möglicherweise ändern Sie obige Abfrage wie ich geschrieben habe auf der Grundlage meiner Annahme
Beispiel auf eine Tabelle, das funktioniert:
Diese Anweisung verschiebt alle AKTIV-Datensätze zu DEAKTIV
wo bereits ein passender ENTWURF-Datensatz vorhanden ist:
Nach der Ausführung der Anweisung oben habe ich einfach updtae der ENTWURF-records ton AKTIV und Begehen