我知道你不能在更新查询中使用聚合 - 但我无法理解如何编写此更新的语法。这是样本数据
UserID Item InStock R2S
14 S0 Yes
28 M23 No
10 Ca2 No
14 G01 No
16 G21 Yes
16 G33 Yes
现在我所追求的是每个UserID,如果InStock对于所有项目都是肯定的,而不是将R2S更新为是
我尝试了以下语法,但是没有考虑具有14和16等倍数的userID,它只是逐行看。
如何将此更改为仅将用户ID 16更新为是,因为两个项目都是r2s?
UPDATE send SET R2S = 'Yes' WHERE (((InStock)='Yes'));
答案 0 :(得分:1)
这是SQL Server,但应该可以工作或关闭。
update send
set R2S = 'Yes'
from send
join (select UserId
from send
group by UserId
having min(InStock) = 'Yes') Maxes
on send.UserId = Maxes.UserId
子查询消除了任何有'否'的人,然后我们就加入了。
我不喜欢数据点存在于两个地方(事实上没有“否”)。您应该在准备好使用它时完成查询。
下一位读者可能更容易理解的另一种方式:
update send
set R2S = 'Yes'
from send
where UserId not in (select UserId
from send
where InStock = 'No')