我有一个包含三个用户ID列和一个活动列
的表userID1 userID2 userID3 活性
我想将每一行设置为非活动状态(Active = 0),其中给定两个UserID存在于同一行中。什么是实现这一目标的最快和最合乎逻辑的方式?
谢谢!
答案 0 :(得分:1)
UPDATE Table1
SET Active = 0
WHERE 1 =
CASE
WHEN UserID1 IS NOT NULL AND UserID2 IS NOT NULL THEN 1
WHEN UserID1 IS NOT NULL AND UserID3 IS NOT NULL THEN 1
WHEN UserID2 IS NOT NULL AND UserID3 IS NOT NULL THEN 1
END
如果您了解常见情况,该案例可以提高效率。它将保持其他案件和/或不必执行。
答案 1 :(得分:1)
UPDATE Table1
SET Active = 0
WHERE @userID1 IN (userID1,userID2,userID3)
AND @userID2 IN (userID1,userID2,userID3);
答案 2 :(得分:0)
我假设当用户不存在时,它为null。 此外,它会将所有活跃用户更新为1
update Table1
set Active = case
when (userID1 is not null and userID2 is not null) then 0
when (userID1 is not null and userID3 is not null) then 0
when (userID2 is not null and userID3 is not null) then 0
else 1
end