У меня есть таблица замечаний и таблица сообщенийMySQL вычитая несколько раз для одной строки в обновлении
Всякий раза, когда сообщение будет удалено, запрос выполняется вычесть количество комментариев (которые будут удалены позже) от каждого COMMENT_COUNT пользователя
Таким образом, если пользователь имеет 2 комментариев в посте, и пост будет удален, их баланс должен иметь 2 вычитают из него
Мой запрос выглядит следующим образом:
UPDATE users
INNER JOIN comment ON users.id = comment.author
SET comment_count = comment_count - 1
WHERE comment.post = 1
Пользователь А имеет 2 комментария с .post = 1, но по какой-то причине, что пользователь получает только COMMENT_COUNT вычтена на 1 раз, когда это должно произойти дважды
Я думаю, что мой синтаксис является правильным, потому что, когда я:
SELECT *
FROM users
INNER JOIN comment ON users.id = comment.author
WHERE comment.post = 1
я получаю два результата для пользователя А
Если не UPDATE
быть итерация над этими двумя результатами, вычитая каждый раз?
Может кто-нибудь объяснить, чего я не хватает? спасибо
+1 Хороший ответ, не знал точного синтаксиса MySQL, поэтому я ждал, когда вы ответите на X-) –
, также они могут поддерживаться триггерами. Btw, 'COUNT (*)' в реальном времени почти всегда дорогой (т. Е. Когда вам нужно «сортировать по комментариям» - получать самые популярные публикации). – zerkms
@zerkms: Я стараюсь не использовать триггеры, если мне это не нужно, что почти невозможно на MySQL :) –