我不能让这个工作......任何想法?
update Products
set UnitPrice = UnitPrice * 0.9
from Products p
inner join [Order Details] od
on p.ProductID = od.ProductID
where COUNT(p.ProductID) > 50
聚合可能不会出现在WHERE子句中,除非它位于HAVING子句或选择列表中包含的子查询中,并且要聚合的列是外部引用。
由于
答案 0 :(得分:3)
试试这个:
update p
set UnitPrice = UnitPrice * 0.9
from Products p
inner join (
select ProductID
from [Order Details]
group by ProductID
having count(*) > 50
) as od
on od.ProductID = p.ProductID
答案 1 :(得分:3)
可能是这样的,取决于你的rdbms,你应该相应地标记
update Products set UnitPrice = UnitPrice * 0.9
where ProductID in (
select ProductID from [Order Details]
group by ProductID
having count(*) > 50)
答案 2 :(得分:0)
在查询中使用HAVING
子句代替WHERE
答案 3 :(得分:0)
可以在没有JOIN的情况下完成:
update Products set UnitPrice = UnitPrice * 0.9
from ( select ProductID
from [Order Details]
group by ProductID
having count(*) > 50 ) a
where Product.ProductID=a.ProductID