我有这个问题:
$db
->prepare("UPDATE users
SET reputation = reputation +
CASE
WHEN id = ? THEN 2
WHEN id = ? AND ? THEN 15
END
WHERE id IN (?, ?); ")
->execute(array($author_ques_id, $author_ans_id, $bool, $author_ans_id, $author_ques_id));
请关注这个条件:
WHEN id = ? AND ? THEN 15
// ^ this is containing a boolean value
我想反对那个条件的价值。我的意思是我想在$bool
为false
时运行该条件,并且在true
时不运行。
我可以在通过php之前做到这一点:
$bool = !$bool;
但我想知道我可以在MySQL的查询中这样做吗?
答案 0 :(得分:1)
使用NOT
:
... AND NOT ? THEN 15
答案 1 :(得分:1)
也许你的意思是
...... AND ? IS FALSE
或
...... AND ? IS NOT TRUE
http://code.openark.org/blog/mysql/syntax-of-the-day-is-true-and-is-false