我有两个表,Users 和 #TempTable(它是 Users 的子集)。我想更新用户表中的一列 IsActive。如果 #TempTable 中的用户也在 Users 表中,我想设置 IsActive = 1,否则设置 IsActive = 0。
从不在 #TempTable 中的用户获取用户(这些用户的 IsActive 应设置为 0):
-- (Users \ #TempTable) U (#TempTable \ Users)
SELECT u.UserName
FROM Users u
WHERE (u.UserName) NOT IN
(SELECT t.[User Name] FROM #TempTable t)
UNION ALL
SELECT t.[User Name]
FROM #TempTable t
WHERE (t.[User Name]) NOT IN
(SELECT u.UserName FROM Users u)
我们称它为 ResultSet。对于我的 UPDATE 语句,我将不胜感激。我想做的是:
UPDATE Users
SET IsActive = (CASE WHEN User.UserName IN ResultSet THEN 0 ELSE 1 END)
无需为每个 User.UserName 写出 CASE WHEN。提前致谢!