mysql - 插入到尚不存在的表中

标签 mysql sql

我这里有这个表技能(id =自动增量和主键):

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

只有当您对技能有独特的限制时,这才会“起作用”:

create unique index unq_skills_skill on skills(skill);

关于mysql - 插入到尚不存在的表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53516674/

相关文章:

SQL累积计数

sql - Eclipse SQL Explorer 插件在哪里存储其首选项?

mysql - 如何显示每个评级的员工数量?

MySQL单独限制 "where event_date < ' 2010-01-0 1' or event_date > ' 2011-01-0 1'"

c# - 在哪里放置使用(SqlConnection)

javascript - Postgres + Node - 带有 $1、$2、$3 的参数查询给出错误

mysql - 查找并删除 SQL 记录(如果它们发生在 8 小时内)(最近的记录除外)

mysql - 当 IF 为真时选择列

mysql - 如何处理数据库中存储的大量文档?

mysql - 将表与第二个表中的一个已知变量连接起来