MySQL вставка на дубликат ключа - PullRequest
10 голосов
/ 31 января 2010

Я создаю систему рейтинга и хочу вставить новую строку, если в поле name уже нет name, которое я хочу вставить, и если оно существует, я хочу увеличить поле count на 1

Например, если у меня есть строка name 'Tom', и я пытаюсь вставить другую строку с name 'Tom, тогда я хочу +1 для поля count в строке это уже существует.

Если строка с name 'Tom' не существует, я хочу вставить новую и установить count в 1.

Я знаю, что мог бы сделать это с помощью примерно 3 операторов SQL и некоторых операторов if, но это замедлило бы выполнение скрипта при выполнении команд 2/3 sql.

Есть идеи? Спасибо!

1 Ответ

12 голосов
/ 31 января 2010

см. ВСТАВИТЬ ... НА ДУБЛИКОВАТЬ КЛЮЧ ОБНОВЛЕНИЕ

Если вы укажете ON DUPLICATE KEY UPDATE, и будет вставлена ​​строка, которая приведет к дублированию значения в индексе UNIQUE или PRIMARY KEY, выполняется ОБНОВЛЕНИЕ старой строки.

, например

INSERT INTO table (name,counter) VALUES ('Bob', 1)
  ON DUPLICATE KEY UPDATE counter=counter+1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...