如何使用 Mysql 中的 select 子查询的结果更新 table 上的多行

How to update multiple rows on table with the result of a select subquery in Mysql

我有一个 table“product_quantity_cart”,它在 Mysql 中有一个“价格”列。我想用 select 的结果更新所有匹配特定“id”的行,该结果使用来自两个不同 table 的值。为此,我在更新中执行 select 子查询,结果出现错误 1224:“子查询 returns 多行”。我读过像我这样的子查询不是实现我想要的 Mysql 的正确方法,所以我想问一下哪种方法是正确的。 我的查询如下所示:

update product_quantity_cart set price_product =
  (
  select quantity*price from (select * from product_quantity_cart) as p_q_c  inner join product 
    on product.id_product=p_q_c.id_product
        where id_shopping_cart=7
        );
'''
As you can see, I intend to update column price_product in all rows from table product_quantity_cart. 

您收到错误“子查询 returns 多行”,因为 MySQL 试图将子查询的输出分配给 table 中的每一行。

为了修复此错误,您可以直接引用对 price_product 的最终值有贡献的字段,如下所示:

UPDATE 
    product_quantity_cart 
SET 
    price_product = price * quantity

我不知道你的表是什么样的,但我只是假设你的 inner join product(上面给出的)中的 product 是你的 table2,其中包含列 p.id_productp.quantity 并且您的 product_quantity_cart 有列 id_productprice_productc.pricec.id_shopping_cart

那么查询可以是这样的;

update product_quantity_cart c JOIN product p ON p.id_product = c.id_product
set c.price_product = c.price * p.quantity
WHERE c.id_shopping_cart=7