作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试了多种选择,但找不到合适的解决方案。我想更新 Products
表中的两列。这些列需要从另一个名为 ProductShops
的表中更新。
这两列分别命名为 LowestPrice
和 LowestPriceShopId
。因此,我需要 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/
我是一名优秀的程序员,十分优秀!