我有2个表A和B。我需要根据已定义的规则,根据userid在另一个表中具有的记录数,为所有userid更新表A中的列。如果另一个表中的记录数是3并且是该用户ID所必需的,则将IsCorrect标记为1,否则标记为0,如果计数是2且需要的是5,则将IsCorrect标记为0。以下是我要实现的目标
表A
UserID | Required | IsCorrect
----------------------------------
1 | SO;GO;PE | 1
2 | SO;GO;PE;PR | 0
3 | SO;GO;PE | 1
表B
UserID | PPName
-----------------------
1 | SO
1 | GO
1 | PE
2 | SO
2 | GO
3 | SO
3 | GO
3 | PE
我尝试在连接另一张表的表中使用Update,但是无法使用其中的一个。另外,由于其开销,也不想使用游标。我知道我必须为此规则创建一个存储过程,但是我要寻找的是如何在不使用游标的情况下将userID传递给它。
感谢您的帮助。抱歉,无法正确格式化表格:)
答案 0 :(得分:0)
这回答了原始问题。
嗯,您可以使用相关子查询和一些case
逻辑:
update a
set iscorrect = (case when required <=
(select count(*) from b where b.userid = a.userid)
then 1 else 0
end);
答案 1 :(得分:0)
update A
set IsCorrect = case
when Required <= (select count(*) from B where b.UserID = A.UserID)
then 'Y' -- or 0, or whatever sense is appropriate
else 'N'
end