簡體   English   中英

僅當記錄不存在時才如何添加到MySQL表中?

[英]How to add to a MySQL table only if the record doesn't already exist?

我從JSON對象獲取字符串數組。 我想將這些字符串保存在數據庫中,但前提是它們尚未在數據庫中。 比較數據庫中已有的內容和我要輸入的內容並排除匹配項的最佳方法是什么?

我正在使用PHP和MySQL。

由於您描述的是想在字符串已經存在的情況下保留記錄,因此您可能想要的是INSERTIGNORE修飾符(即,您執行INSERT IGNORE ... )。 如果找到重復的鍵,那將使您的查詢不執行任何操作。 當然,這要求您要插入的字符串字段具有唯一的鍵。

REPLACE可能會執行您想要的操作-它將插入,但是如果主鍵已經存在,則該行將被首先刪除。 除非您需要保留表中的其他列,否則它應該起作用。

http://dev.mysql.com/doc/refman/5.0/en/replace.html

在MySql中,可以使用帶有“ ignore”選項的insert語句,如果其唯一字段與現有行的唯一字段匹配,則不會插入行。 該表必須具有包含相關字段的唯一性約束。

很簡單的例子:

您的表:用戶您的字段:users_id,user_name,郵政編碼,創建的唯一索引:user_name

INSERT INTO用戶(用戶名,郵政編碼,已創建)值('joe',75034,'2009-06-11')在重復鍵更新上users_id = LAST_INSERT_ID(id)

user_name具有唯一索引; 因此,您只能添加一次。 當您使用上述SQL時,第一次添加就可以了。 第二次,它實際上不會執行插入操作。 設置重復副本鍵的方式,您現在可以使用PHP從mysql獲取最后一個插入ID,並知道users_id是真正的插入還是重復的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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