Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql根据列值从一个表到另一个表插入许多唯一的行_Mysql - Fatal编程技术网

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

mysql根据列值从一个表到另一个表插入许多唯一的行,mysql,Mysql,我试图将一个表中的多行数据插入到另一个表中,如果列LiquiorCode中存在具有重复值的行,那么就不要插入它。我在这里找到了以下解决方案,但是它是针对sql server的,而不是针对mysql的,使用join也可能更好 insert into tblBusinessName(BusinessFilterPhrase, BusinessCategoryID) select @BusinessFilterPhrase, @BusinessCategoryID from tblBusinessNa

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

您的解决方案基本上适合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部分基本上不为自己设置列。其目的是防止在重复项上出现错误