[英]php mysql - insert items if not exist
我有一個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);
on duplicate key
部分上什么也沒做。 它只是忽略任何重復的記錄。
用新數字名稱new_users創建一個表,然后執行以下查詢:
INSERT INTO `rtusers` (`Status`, `MSISDN`)
SELECT Status, MSISDN from new_users
WHERE MSISDN NOT IN (SELECT MSISDN FROM rtusers);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.