簡體   English   中英

從另一個表更新列 - mySQL 3.5.2

[英]Update column from another table - mySQL 3.5.2

我嘗試了幾種方法來從另一個表更新 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 <= 4.0.4 不支持多表更新 我強烈建議將您的服務器更新到 MySQL 5.0.xx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM