2010-01-31 2 views
10

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

Например, если у меня есть Роу name «Том», и я стараюсь, чтобы вставить еще одну строку с name «Тома, то я хочу +1 для поля count на строке, уже существует.

Если строка с name «Томью» не существует, я хочу, чтобы вставить новую и установить count 1.

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

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

ответ

12

см INSERT ... ON DUPLICATE KEY UPDATE

Если вы указываете ON KEY UPDATE DUPLICATE, и вставляется строка, которая будет вызывать повторяющееся значение в уникальный индекс или первичный ключ, обновление старой строки выполняется.

, например.

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

Хм, это не совсем работает - ошибок нет. Могу ли я указать поле, которое должно «ON DUPLICATE»? – tarnfeld

+0

отсортировано, я добавил его в ПЕРВЫЕ КЛЮЧИ таблицы: D – tarnfeld

+0

Не обязательно должен быть основным ключом. Единственного ключа достаточно (хотя PRIMARY всегда уникален) – VolkerK

Смежные вопросы