任何人都知道我如何使该查询成为幂等,即,如果多次执行该查询,则不会插入任何重复的记录
INSERT INTO MyAuthDb..AspNetUserClaims ( UserId, ClaimType, ClaimValue )
SELECT c.UserId, 'givenname', c.FirstName
FROM MyOtherDb..Contact c
INNER JOIN
(SELECT UserId, MAX(CreatedOn) AS MaxDate
FROM MyOtherDb..Contact
GROUP BY UserId) c1
ON c.UserId = c1.UserId
INNER JOIN MyAuthDb..AspNetUsers u ON c.UserId = u.Id
AND c.CreatedOn = c1.MaxDate
答案 0 :(得分:2)
使用NOT EXISTS
。
INSERT INTO MyAuthDb..AspNetUserClaims ( UserId, ClaimType, ClaimValue )
SELECT c.UserId, 'givenname', c.FirstName
FROM MyOtherDb..Contact c
INNER JOIN
(SELECT UserId, MAX(CreatedOn) AS MaxDate
FROM MyOtherDb..Contact
GROUP BY UserId) c1
ON c.UserId = c1.UserId
INNER JOIN MyAuthDb..AspNetUsers u ON c.UserId = u.Id
AND c.CreatedOn = c1.MaxDate
WHERE NOT EXISTS (SELECT 1 FROM MyAuthDb..AspNetUserClaims A
WHERE A.UserId = c.UserId AND A.ClaimType = 'givenname' AND A.ClaimValue = c.FirstName )