mysql根据列值从表到表插入许多唯一的行

时间:2014-12-10 00:35:57

标签: mysql

我试图将一行数据中的多行数据插入到另一个表格中,如果在栏柜代码中存在一个具有重复值的行,那么就不要插入它。我在这里找到了以下解决方案,但是对于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
                 )

1 个答案:

答案 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部分基本上什么都不做(将列设置为自身)。其目的是防止重复错误。