Вставить в таблицу, где еще не существует - PullRequest
0 голосов
/ 28 ноября 2018

У меня есть эта таблица 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 голосов
/ 28 ноября 2018

Я бы просто добавил уникальный ключ на skills и использовал бы insert ignore

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

Затем можно использовать mysql_affected_rows(), чтобы проверить, добавлена ​​ли какая-либо запись или нет, еслион возвращает 0, тогда запись не добавлена ​​из-за дублирования.

0 голосов
/ 28 ноября 2018

Это правильная команда:

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...