1

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
4

2 に答える 2

2

サブクエリもマルチテーブル更新もサポートしていない 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 ステートメントにセミコロンを追加するのを忘れていました。

于 2008-10-14T15:32:08.350 に答える
0

複数テーブルの更新は、MySQL <= 4.0.4 ではサポートされていません。サーバーを MySQL 5.0.xx に更新することを強くお勧めします。

于 2008-10-14T08:59:52.043 に答える