SELECTクエリを使用してテーブル変数からいくつかのデータを削除しようとしています。次のコードは完全に機能します。
DECLARE @sgID int
SET @sgID = 1234
DELETE FROM
@tbl_users
WHERE
(userID NOT IN (
SELECT
userID
FROM
[SGTable]
WHERE
(sgID = @sgID)
))
私はこのクエリを高速化しようとしていますが、次のアプローチの方が良いかもしれないことを読んでいます。ただし、次のコードを使用すると、すべてのレコードがテーブル変数から削除されます。
DELETE
tmp
FROM
@tbl_Users tmp INNER JOIN
[SGTable] sgu ON sgu.userID = tmp.userID
WHERE
(sgu.sgID <> @sgID)
私は(明らかに間違って)これらの2つのクエリが同じことをしたと仮定しました(サブクエリでuserIDが見つからないテーブル変数のすべてのuserIDを削除します)。明らかに読みやすく、保守しやすいので、誰かが2番目のクエリを機能させるためのアドバイスを提供できますか?