私はこれまでに次のSQLを持っています...
-- SETUP MY SQL
DECLARE @NewUsers TABLE (Username VARCHAR(32), Name VARCHAR(32))
DECLARE @UserResults TABLE (UserName VARCHAR(32), UserId INT)
INSERT INTO @NewUsers (Username, Name)
VALUES ('johndoe', 'John Doe'),
('janedoe', 'Jane Doe'),
('mrsmith', 'Mr Smith') -- This guy already exists in the DB though...
-- INSERT STATEMENT
INSERT INTO User (Username, Name)
SELECT new.Username, new.Name
FROM @NewUsers new
WHERE NOT EXISTS (SELECT 1 FROM dbo.User WHERE User.Username = new.Username)
私がやりたいのは、@@IDENTITY
後でSQLの別の挿入ステートメントで使用する結果の値を取得することですが、すでに存在していて挿入されていないユーザーを含むすべてのIDを取得したいと思います。後でいつでも別のselectステートメントを実行できることは知っていますが、それが最善の方法かどうかはわかりません。
INSERT INTO @UserResults (UserResults, UserId)
SELECT Username, UserId
FROM User
INNER JOIN @NewUsers new ON new.Username = User.Username
句を使用して、結果テーブルにすべてのID(新しく挿入されたものや既存のもの)を入力するより効率的な方法があると思いますが、よくOUTPUT
わかりません...私が行っている方法よりも良い方法があります?