[英]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.