如何使用 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_product
和p.quantity
并且您的 product_quantity_cart
有列 id_product
、price_product
、c.price
和 c.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
我有一个 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_product
和p.quantity
并且您的 product_quantity_cart
有列 id_product
、price_product
、c.price
和 c.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