Usersと#TempTable(Usersのサブセット)の2つのテーブルがあります。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ごとにCASEWHENを書き出す必要はありません。前もって感謝します!