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