到目前为止,我有以下 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 中的另一个插入语句中使用,但我想获取所有身份,包括已经存在但未插入的用户。我知道之后我总是可以做另一个选择语句,但我不确定这是最好的方法吗?
INSERT INTO @UserResults (UserResults, UserId)
SELECT Username, UserId
FROM User
INNER JOIN @NewUsers new ON new.Username = User.Username
我认为有一种更有效的方法可以使用该OUTPUT
子句使用所有身份(新插入和/或现有)填充结果表,但我不确定......有没有比我正在做的方式更好的方法?