我需要更新两行,我需要使用更新。我所尝试过的都失败了。
我得到了连接和选择语句,但它们在Update语句中不起作用。
Select [Order Details].ProductID
From [Order Details] Inner Join Products
On [Order Details].ProductID = Products.ProductID
Inner join Categories
On Products.CategoryID = Categories.CategoryID
Where CategoryName = 'Confections' and Unitsinstock > 50
Group By [Order Details].ProductID
此声明找到了我需要更新的内容,但是当我使用它时,它将无效。
Begin Transaction
Go
Update [Order Details]
Set Discount = (SELECT Max(Discount))
FROM [Order Details]
Right Join Products
On [Order Details].ProductID = Products.ProductID
Inner join Categories
On Products.CategoryID = Categories.CategoryID
Where CategoryName = 'Confections' and Unitsinstock > 50
Group By [Order Details].ProductID
Go
RollBack Transaction
我正在使用回滚只是因为我搞砸了。 任何帮助表示赞赏。
答案 0 :(得分:1)
我无法对此进行测试,但它应该能满足您的需求。
Update [Order Details]
Set Discount = DiscountsPerProduct.MaxDiscount
--select OD.Discount, DiscountsPerProduct.MaxDiscount, *
From [Order Details] OD
Inner Join (
Select Max([Order Details].Discount) as MaxDiscount, [Order Details].ProductID
From [Order Details]
Inner Join Products On Products.ProductID = [Order Details].ProductID
Inner join Categories On Products.CategoryID = Categories.CategoryID
Where CategoryName = 'Confections' and Unitsinstock > 50
Group By [Order Details].ProductID
) DiscountsPerProduct On OD.ProductID = DiscountsPerProduct.ProductID
我添加了注释掉的选项,因为这可以让您准确了解更新会受到什么影响,并且在查询尚未正确时对故障排除很有用。