簡體   English   中英

php mysql-如果不存在則插入項目

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM