可能重复:
如何';如果不存在则插入';在MySQL中?
有SQL表:
CREATE TABLE IF NOT EXISTS `MyTable` (
`id` smallint(6) NOT NULL AUTO_INCREMENT,
`MyVar` varchar(40) DEFAULT NULL,
PRIMARY KEY (`id`)
)
并且有两个PHP数组arr1[]=array("abc","bcd")
和arr2[]=array("abc","cde")
。
假设我已经将arr1[]值保存到SQL表中。现在假设我需要将arr2[]值保存到同一个SQL表中。为了避免重复保存"abc"条目,我需要编写哪个SQL INSERT查询?结果必须是:
MyTable:
1 | abc
2 | bcd
3 | cde
但不是:
MyTable:
1 | abc
2 | bcd
3 | abc
4 | cde
更新:也许MyTable应该以忽略重复条目的方式创建/定义?
有三种可能的解决方案:使用INSERT IGNORE
、REPLACE
或INSERT ... ON DUPLICATE KEY UPDATE
。查看这篇文章。
您也可以在内存中与array-s相交,然后如果该解决方案适合您,则只插入唯一的值。
在表中将MyVar
设为UNIQUE
。
像这样:
CREATE TABLE IF NOT EXISTS `MyTable` (
`id` smallint(6) NOT NULL AUTO_INCREMENT,
`MyVar` varchar(40) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX `myvaridx` (`MyVar`)
);
或者,如果您无法重新创建表,请使用进行更改
ALTER TABLE `request`
ADD UNIQUE INDEX `myvaridx` (`MyVar`)
使用SQL执行这样的任务会很浪费。
我建议使用"array_merge"函数来合并数组,然后使用"array_unique"函数来处理重复。
然后将唯一值插入数据库。