[英]Using the result of a SQL select query to update a table
我已經在zen cart電子商務網站上進行了相當廣泛的工作,並且我對php有很好的了解,但只有SQL的基礎知識。 我的問題與涉及的禪宗車或PHP無關,而是與三個表之間的相互作用有關。
表1:inventoryexport->列:item_num,item_price,item_stock
表2:zen_products_supplier->列:products_id,australiait_code
表3:zen_products->列(色號,但相關列):products_id,products_price
現在,我希望通過選擇item_num = australiait_code的所有產品,用庫存導出表中的item_price更新zen_products表中的“ products_price”。
我可以通過此查詢選擇所需的信息,但不確定如何將其直接插入zen_products表的更新查詢中。
SELECT zen_products_supplier.products_id, inventoryexport.item_price, inventoryexport.item_stock
FROM zen_products_supplier
INNER JOIN inventoryexport
ON inventoryexport.item_num=zen_products_supplier.australiait_code
任何幫助將不勝感激。
這是您主題的最佳答案: MySQL-基於SELECT查詢的UPDATE查詢
可能您必須創建臨時表。 因為使用從同一表中進行選擇來更新表可能會出現問題。
如果要求使用item_num = australiait_code的所有產品的庫存導出表中的item_price總數更新zen_products表中的“ products_price”,則以下查詢將起作用:
update zen_products
set products_price = (select sum(ie.item_price)
from inventoryexport ie join zen_products_supplier zps on ie.item_num =
zps.australiait_code )
但是,如果要使用所有產品的庫存導出表中的item_price總數更新zen_products表中的“ products_price”,則item_num = australiait_code以及zen_products_supplier = zen_products表中正在更新的當前行的產品id查詢將起作用:
update zp
set zp.products_price = (select sum(ie.item_price)
from zen_products_supplier zps
join inventoryexport ie on ie.item_num = zps.australiait_code
where zps.products_id = zp.products_id)
from zen_products as zp
希望這可以幫助。
通過將SQL分為兩個步驟,我終於解決了這個愚蠢的問題。
UPDATE
inventoryexport ie, zen_products_supplier zps
SET
ie.products_id=zps.products_id
WHERE ie.item_num=zps.australiait_code;
然后執行以下命令:
UPDATE
zen_products zp, inventoryexport ie
SET
zp.products_quantity=ie.item_stock, zp.products_price=ie.item_price
WHERE
ie.products_id=zp.products_id;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.