sql - 使插入查询幂等 - sql server
问题描述
任何人都知道我是如何使这个查询幂等的,即如果它被执行了不止一次,它就不会插入任何重复的记录
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
解决方案
利用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 )
推荐阅读
- java - camel-zeromq 未正确终止 JeroMQ 上下文
- cloud - Ingress 子域显示——创建 ibm-cloud kubernetes 集群后
- python - 我们如何为视频处理进行时间过滤?
- python - 如何抓取一个难以阅读的表格(熊猫和美丽的汤)的网站?
- swift - 您如何在 swift 4 中成功流式传输远程 mp3 文件?
- sorting - 在 React Native 中过滤数据问题
- javascript - 将 HTML 日期转换为 Mysql 格式
- php - laravel 5.8.7 页面过期(419)
- amazon-web-services - 部署包大于 250MB 时替代 AWS lambda?
- php - 封装的嵌入式变量数组php