mysql根据列值从一个表到另一个表插入许多唯一的行
我试图将一个表中的多行数据插入到另一个表中,如果列LiquiorCode中存在具有重复值的行,那么就不要插入它。我在这里找到了以下解决方案,但是它是针对sql server的,而不是针对mysql的,使用join也可能更好mysql根据列值从一个表到另一个表插入许多唯一的行,mysql,Mysql,我试图将一个表中的多行数据插入到另一个表中,如果列LiquiorCode中存在具有重复值的行,那么就不要插入它。我在这里找到了以下解决方案,但是它是针对sql server的,而不是针对mysql的,使用join也可能更好 insert into tblBusinessName(BusinessFilterPhrase, BusinessCategoryID) select @BusinessFilterPhrase, @BusinessCategoryID from tblBusinessNa
insert into tblBusinessName(BusinessFilterPhrase, BusinessCategoryID)
select @BusinessFilterPhrase, @BusinessCategoryID
from tblBusinessName t1
where NOT EXISTS (select 1
from tblBusinessName d1
where d1.BusinessFilterPhrase = @BusinessFilterPhrase
)
您的解决方案基本上适合MySQL。就目前而言 如果要确保LiquiorCode是唯一的,则应让数据库使用唯一约束或索引强制执行此约束:
create unique index idx_tblBusinessName(liqurocode);
然后,在执行插入时,忽略错误。我更喜欢在重复密钥更新时使用。这是一个版本的,比如query,当然,您的示例代码不使用LiquiorCode,所以我必须猜测您真正的意思:
insert into tblBusinessName(BusinessFilterPhrase, BusinessCategoryID)
values (@BusinessFilterPhrase, @BusinessCategoryID)
on duplicate key update BusinessCategoryId = values(BusinessCategoryId);
on duplicate key update部分基本上不为自己设置列。其目的是防止在重复项上出现错误