gpt4 book ai didi

sql - 如何在 MSSQL 中使用聚合函数更新表中的两列?

转载 作者:行者123 更新时间:2023-12-02 08:27:36 24 4
gpt4 key购买 nike

我尝试了多种选择,但找不到合适的解决方案。我想更新 Products 表中的两列。这些列需要从另一个名为 ProductShops 的表中更新。

这两列分别命名为 LowestPriceLowestPriceShopId。因此,我需要 ProductShops 中的总和 NewPrice + DeliveryCosts 和该记录中的 ShopId 中的最低值。这需要在 Products 表中更新。

我尝试过的是:

UPDATE Products 
SET LowestPrice = MIN(ps.NewPrice + ps.DeliveryCosts),
LowestPriceShopId = ps.ShopId
FROM Products
INNER JOIN ProductShops ps ON Products.Id = ps.ProductId

错误消息:聚合可能不会出现在 UPDATE 语句的集合列表中。

UPDATE p 
SET LowestPrice = ps2.totalPrice,
LowestPriceShopId = ps2.ShopId
FROM Products p JOIN
(select ps.ProductId, MIN(ps.NewPrice + ps.DeliveryCosts) AS totalPrice, ShopId FROM ProductShops ps) ps2
ON p.Id = ps2.ProductId

错误消息:“ProductShops.ProductId”列在选择列表中无效,因为它未包含在聚合函数或 GROUP BY 子句中。

UPDATE Products
SET LowestPrice = (SELECT MIN(ps.NewPrice + ps.DeliveryCosts)
FROM ProductShops ps WHERE ps.ProductId = p.Id)
FROM Products p

对于最后一个查询,我不知道如何获取 ShopId

最佳答案

UPDATE p
SET LowestPrice = ps2.totalPrice,
LowestPriceShopId = ps2.ShopId
FROM Products p
JOIN (SELECT
ps.ProductId,
MIN(ps.NewPrice + ps.DeliveryCosts) AS totalPrice,
ShopId
FROM ProductShops ps
GROUP BY ps.ProductId,ShopId) ps2
ON p.Id = ps2.ProductId

关于sql - 如何在 MSSQL 中使用聚合函数更新表中的两列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30640898/

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