插入到尚不存在的表中

时间:2018-11-28 09:57:13

标签: mysql sql

我在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`;

2 个答案:

答案 0 :(得分:1)

这是正确的命令:

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);

答案 1 :(得分:-1)

我只需在skills上添加一个唯一键,然后使用insert ignore

INSERT IGNORE INTO skills (`skill`) VALUES (`PHP`)

然后可以使用mysql_affected_rows()来验证是否添加了任何记录,如果返回0,则由于重复而没有添加记录。