別のテーブルの列を更新する-mySQL 3.5.2
-
03-07-2019 - |
質問
mySQLデータベーステーブルの列を別のテーブルから更新するためにいくつかの方法を試しましたが、運がありません。
バージョン3.5.2がマルチテーブル更新をサポートしていないことを読んだところ、コードベースのソリューションが必要です-正しいですか?
もしそうでないなら、誰かがSQLを使って私を正しい方向に向けることができますか?
UPDATE products SET products_ordered = (
SELECT SUM(products_quantity)
FROM orders_products
WHERE products_id = products.products_id
);
または:
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
解決
サブクエリまたはマルチテーブル更新のいずれもサポートしていないMySQLを使用していたとき、私はあなたが説明していることを行うためにトリックを使用しました。結果がSQLステートメントであるクエリを実行し、出力を保存してSQLスクリプトとして実行します。
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;
ところで、私の知る限り、MySQL 3.5.xのようなバージョンはありません。あなたはその間違いを報告したかもしれません。または、mSQLなどの別の製品を使用しています。
編集:上記のクエリで生成されたSQLステートメントにセミコロンを追加するのを忘れました。
他のヒント
MySQLではマルチテーブル更新はサポートされていません<!> lt; = 4.0.4 サーバーをMySQL 5.0.xxに更新することを強くお勧めします
所属していません StackOverflow