我试图将一行数据中的多行数据插入到另一个表格中,如果在栏柜代码中存在一个具有重复值的行,那么就不要插入它。我在这里找到了以下解决方案,但是对于sql server而不是mysql,使用join可能更好的解决方案。
insert into tblBusinessName(BusinessFilterPhrase, BusinessCategoryID)
select @BusinessFilterPhrase, @BusinessCategoryID
from tblBusinessName t1
where NOT EXISTS (select 1
from tblBusinessName d1
where d1.BusinessFilterPhrase = @BusinessFilterPhrase
)
答案 0 :(得分:0)
你的解决方案基本上适合MySQL。 。 。就目前而言。
如果您想确保liquorcode
是唯一的,那么您应该让数据库使用唯一约束或索引强制执行此约束:
create unique index idx_tblBusinessName(liqurocode);
然后,当您执行插入操作时,只需忽略该错误。我更喜欢使用on duplicate key update
执行此操作。这是一个诸如查询的版本(当然,您的示例代码不使用liquorcode
,所以我必须猜测您的真实含义):
insert into tblBusinessName(BusinessFilterPhrase, BusinessCategoryID)
values (@BusinessFilterPhrase, @BusinessCategoryID)
on duplicate key update BusinessCategoryId = values(BusinessCategoryId);
on duplicate key update
部分基本上什么都不做(将列设置为自身)。其目的是防止重复错误。