我有一个 PHP 数组,我想从该数组插入 MySQL 表中尚未存在的项目。搜索后,我可以使用以下代码逐项执行此操作
INSERT INTO `rtusers` (`Status`, `MSISDN`)
SELECT * FROM (SELECT 0, '966111111111') AS tmp
WHERE NOT EXISTS (
SELECT `MSISDN` FROM rtusers
WHERE MSISDN = '966111111111' ) LIMIT 1;
但问题是我的数组中有数百个项目。如果我使用这段代码作为循环,这将对数据库产生数百次点击。有人有更简单的解决方案吗?
最佳答案
您可能应该将数组直接加载到某种临时表中。您可以使用单独的插入语句或使用load data infile
或其他一些批量加载机制来完成此操作。
然后要忽略该记录,请在 rtusers(mission)
上定义唯一索引并使用:
insert into rtusers(status, mission)
select status, mission
from rtusers_staging
on duplicate key update mission = values(mission);
重复键
部分不执行任何操作。它只是忽略任何重复的记录。
关于php mysql - 如果不存在则插入项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34936734/