2
我有以下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
值到另一个INSERT语句在SQL我以后上使用,但我想所有的身份,包括已经存在且未被插入的用户。我知道我可以随时做另一个选择声明,但我不确定这是最好的方法吗?
INSERT INTO @UserResults (UserResults, UserId)
SELECT Username, UserId
FROM User
INNER JOIN @NewUsers new ON new.Username = User.Username
我认为有填充结果表中的所有身份使用OUTPUT
条款(新插入的和/或现有的),更有效的方式,但我不知道......有没有更好的比我在做什么的方式?
所以基本上,我已经在正确地做它... –
是的,我同意。今天的数据库非常快。在出现实际性能问题之前,最好忽略性能方面的考虑。 #1的考虑应该是清晰的,而你目前的方法简单而好。 – Andomar