Вставка MySQL в дубликат ключа

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

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

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

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

Любые идеи? Спасибо!

Ответ 1

см. INSERT... ON DUPLICATE KEY UPDATE

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

например.

INSERT INTO table (name,counter) VALUES ('Bob', 1)
  ON DUPLICATE KEY UPDATE counter=counter+1