Update Spalte aus einer anderen Tabelle - mySQL 3.5.2
-
03-07-2019 - |
Frage
Ich habe ein paar Ansätze versucht, eine Spalte in einer mySQL-Datenbank-Tabelle aus einer anderen Tabelle zu aktualisieren, aber habe kein Glück.
ich irgendwo, dass die Version 3.5.2 nicht lese Multi-Table-Updates unterstützt, und ich brauche eine Code-basierte Lösung - ist das richtig
Wenn nicht jemand mich in der richtigen Richtung sql zeigen kann?
UPDATE products SET products_ordered = (
SELECT SUM(products_quantity)
FROM orders_products
WHERE products_id = products.products_id
);
oder:
Create temporary table my_temp_table
as
SELECT products_id, SUM(products_quantity) as total
FROM orders_products
GROUP BY products_id
UPDATE products, my_temp_table
SET products.products_ordered = my_temp_table.total
WHERE products.products_id = my_temp_table.products_id
Lösung
Wenn ich verwende MySQL verwenden, die weder Unterabfragen oder Multi-Table-Updates unterstützt hat, habe ich einen Trick zu tun, was Sie beschreiben. Führen Sie eine Abfrage, deren Ergebnisse sich SQL-Anweisungen, und dann speichern Sie die Ausgabe und das als SQL-Skript ausgeführt werden.
SELECT CONCAT(
'UPDATE products SET products_ordered = ',
SUM(products_quantity),
' WHERE product_id = ', products_id, ';') AS sql_statement
FROM orders_products
GROUP BY products_id;
By the way, gibt es keine solche Version MySQL 3.5.x soweit ich weiß. Ich denke, man kann das falsch berichtet haben. Oder aber Sie verwenden ein anderes Produkt wie mSQL.
Edit:. Ich habe vergessen, ein Semikolon in die SQL-Anweisung von der Abfrage oben erzeugt hinzuzufügen
Andere Tipps
Multi-Table-Updates unterstützen, werden nicht in MySQL <= 4.0.4 Ich würde empfehlen, Ihren Server zu MySQL 5.0.xx zu aktualisieren