【发布时间】:2018-05-24 12:09:03
【问题描述】:
我正在使用
INSERT INTO [dbo].[ADMIN_Publications_email]
([email]
,[pmid]
)
SELECT @email, CAST(Item AS NVARCHAR(10))
FROM dbo.Split(@PMID_List, ',')
Split 是一个非常标准的分割字符串的函数。插入工作正常,但如果已添加记录,我需要一种删除记录的方法。这样,如果它一遍又一遍地完成相同的过程,我就不会得到一大堆重复的记录。如何根据电子邮件地址和 PMID_list 中的值删除。我不能全部删除,因为它们可以以不同的方式添加。我需要类似的东西
DELETE FROM [dbo].[ADMIN_Publications_email]
WHERE (email = @Email) AND IN dbo.Split(@PMID_LIST)
拆分在where子句中的位置。
【问题讨论】:
-
您也可以考虑通过在您的
INSERT查询中添加WHERE NOT EXISTS来跳过已经插入的数据,而不是预先删除所有内容。 (当然,这只有在您知道数据稳定时才有效。) -
你伤了我的心。我以为你会规范化你的数据:stackoverflow.com/questions/50498610/…
标签: sql sql-server stored-procedures sql-server-2016