gpt4 book ai didi

mysql - 如何在 UPDATE 查询中获得 DISTINCT/GROUP BY 行为

转载 作者:行者123 更新时间:2023-11-30 01:21:03 26 4
gpt4 key购买 nike

我收到错误:错误号:1242 子查询返回超过 1 行

因为我的UPDATE子查询产生重复值。我知道 DISTINCTGROUP BY 可以删除 SELECT 查询中的重复值。如何在 UPDATE 查询上修复它。我的查询在这里

UPDATE 
product_stock AS S
LEFT JOIN
product_purchase_item AS I
ON
S.product_id=I.product_id AND S.product_size=I.product_size
LEFT JOIN
product_purchases AS P
ON
I.product_purchase_item_id=P.product_purchase_item_id
SET
S.product_size_quantity=S.product_size_quantity+I.quantity
WHERE
S.product_id=?
AND
S.product_size=?

假设,如果我在 SELECT 查询中转换它

SELECT
S.*
FROM
product_stock AS S
LEFT JOIN
product_purchase_item AS I
ON
S.product_id=I.product_id AND S.product_size=I.product_size
LEFT JOIN
product_purchases AS P
ON
I.product_purchase_item_id=P.product_purchase_item_id

查询返回

product_stock_id  product_id   product_size product_quantity10                 216          1            1 10                 216          1            111                 216          5            1   

但我需要(只需一个 DISTINCT 关键字就可以在 SELECT 查询中执行此操作)

product_stock_id  product_id   product_size product_quantity10                 216          1            1 11                 216          5            1   

但是,如何在我的 UPDATE 子查询中检索上述数据(UNIQUE VALUES)?是否可以使用 DISTINCT 关键字或类似 UPDATE 查询中的任何内容?

最佳答案

这应该可以解决问题。包含product_purchases 表是否有原因,因为它在您的查询中似乎是多余的?

UPDATE product_stock SET product_size_quantity = product_size_quantity + I.quantity

from product_stock
INNER JOIN (select product_id, product_size, sum(quantity) from product_purchase_item group by product_id, product_size) AS I
ON product_stock.product_id=I.product_id AND product_stock.product_size=I.product_size

WHERE product_stock.product_id=?
AND product_stock.product_size=?

关于mysql - 如何在 UPDATE 查询中获得 DISTINCT/GROUP BY 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18537760/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com