4
我有两个表,用户和#TempTable(它是用户的子集)。我想更新Users表中的一列IsActive。如果位于#TempTable中的用户也在Users表中,并且设置IsActive = 0,则我想设置IsActive = 1。使用CASE语句的列中的SQL更新行
获取用户未在#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。提前致谢!