簡體   English   中英

插入到尚不存在的表中

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

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