[英]Insert into table where not already exists
我在這里有此表skills
(id = auto increment & primary key)
:
| id | skill |
--------------
| 1 | PHP |
--------------
在此表中,我具有PHP
技能。 要插入一項新技能,我需要檢查該技能是否已經存在。 我已經嘗試過這種方式,但是沒有用。 我對MySQL / SQL不太熟悉:
應該不起作用:
INSERT INTO skills (`skill`) VALUES (`PHP`) ON DUPLICATE KEY UPDATE `skill` = `PHP`;
應該管用:
INSERT INTO skills (`skill`) VALUES (`HTML`) ON DUPLICATE KEY UPDATE `skill` = `HTML`;
這是正確的命令:
INSERT INTO skills (`skill`)
VALUES ('PHP') -- fixed the backticks
ON DUPLICATE KEY UPDATE `skill` = 'PHP';
我認為反引號是錯字。 它們應該是單引號。
雖然我會這樣寫:
INSERT INTO skills (skill)
VALUES ('PHP')
ON DUPLICATE KEY UPDATE skill = VALUES(skill);
如果您對skill
有獨特的約束,這只會“起作用”:
create unique index unq_skills_skill on skills(skill);
我只需在skills
上添加唯一鍵,然后使用插入忽略
INSERT IGNORE INTO skills (`skill`) VALUES (`PHP`)
然后可以使用mysql_affected_rows()
驗證是否添加了任何記錄,如果返回0,則由於重復而沒有添加記錄。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.