sql 从select中插入,通过避免循环(避免循环)使用连接仅插入缺失的记录

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql 从select中插入,通过避免循环(避免循环)使用连接仅插入缺失的记录相关的知识,希望对你有一定的参考价值。

IF @IsAssigning = 1
	BEGIN
		INSERT INTO [dbo].[ProductMapping] ([ProductId], [OrganizationId], [ProductSeriesId], [CenterXPGUXSkillId], [IsActive], [CreatedBy], [CreatedDate])
		SELECT tbl.ProductId, @OrganizationId, tbl.ProductSeriesId, @SkillId, 1, @UserId, GETDATE()
		FROM @tblProducts tbl
		WHERE tbl.ProductId NOT IN (
				SELECT PM.ProductId
				FROM ProductMapping PM WITH (NOLOCK)
				WHERE PM.IsActive = 1
					AND pm.OrganizationId = @OrganizationId
					AND pm.CenterXPGUXSkillId = @SkillId
				)
	END
	
	or --Best
	
	INSERT INTO dbo.TCIAssessmentResultSummary (AssessmentMode, UserId, ActivityId, Rating, AppearedDate, Isactive)
		SELECT 'NA', tbl.UserId, tbl.ActivityId, tbl.Rating, GETDATE(), 1
		FROM #TEMP tbl
		WHERE NOT EXISTS (
				SELECT 1
				FROM TCIAssessmentResultSummary A
				WHERE A.UserId = tbl.UserId
					AND A.ActivityId = tbl.ActivityId
					AND Isactive = 1
				)

		

以上是关于sql 从select中插入,通过避免循环(避免循环)使用连接仅插入缺失的记录的主要内容,如果未能解决你的问题,请参考以下文章

避免在 SQL Server 中的 INSERT INTO SELECT 查询中重复

哪种 SQL 模式可以更快地避免插入重复行?

在需要计数器时避免 SQL 中的 while 循环

如何避免在 SQL Server 中重复插入动态值

如何避免两次编写 SQL Server 查询以避免重复?

如何避免codeigniter中的sql注入