MySQL Как вставить новую запись или обновить поле в зависимости от того, существует ли оно?
-
19-09-2019 - |
Вопрос
Я пытаюсь реализовать систему рейтинга, где я держу следующие два поля в своей таблице DB:
Рейтинг (текущий рейтинг) num_rates (количество представленных рейтингов)
UPDATE `mytable`
SET rating=((rating*num_rates)+$theRating)/num_rates, num_rates=num_rates+1
WHERE uniqueCol='$uniqueCol'
Переменные из моего PHP -кода.
Таким образом, в основном иногда ряд с уникальным знаком не существует в БД, так как я могу сделать приведенное выше утверждение, если существует, а если он не делает что -то вроде этого:
INSERT INTO `mytable`
SET rating=$theRating, num_rates=1, uniqueCol=$uniqueCol
Решение
Посмотри на Вставьте ... в дубликате обновления клавиш.
Это должно выглядеть примерно так:
INSERT INTO mytable (rating, num_rates, uniqueCol)
VALUES ($theRating, 1, $uniqueCol)
ON DUPLICATE KEY UPDATE
rating=((rating*num_rates)+$theRating)/num_rates,
num_rates=num_rates+1;
Убедитесь, что у вас есть UNIQUE index
или же PRIMARY KEY
на вашей uniqueCol
.
Не связан с StackOverflow