У меня есть этот запрос:Как заменить NULL на 0 в запросе?
$db->prepare("UPDATE users
SET reputation = reputation +
(CASE WHEN id = ? THEN 2
WHEN id = ? AND NOT ? THEN 15 END)
WHERE id IN (?, ?); ")
->execute(array($author_ques_id, $author_ans_id, $isOwnAnswer,
$author_ans_id, $author_ques_id));
Пожалуйста, сосредоточить внимание на этой линии:
WHEN id = ? AND NOT ? THEN 15 END)
Когда NOT ?
является ложным(другими словами $isOwnAnswer = true
), величина reputatuin
для такого пользователя будет NULL
. Потому что reputation = reputation + NULL
оценивает reputation = NULL
.
Хорошо, как я могу предотвратить это? Я хочу, когда это условие false, затем reputation
не меняется.
Добавление 'ELSE 0' кажется умным .. thx +1 – stack