如何在CASE语句中编写多个条件?

时间:2016-06-16 12:34:12

标签: php mysql sql case

这是我的问题:

UPDATE mytable
SET mycol = mycol +
           (CASE id
              WHEN ? THEN 5
              WHEN ? THEN 10
              WHEN ? THEN 15
              WHEN ? THEN 20
           END)
WHERE id IN (?, ?, ?, ?)

我需要为所有这些条件调查另一个条件。所以我写这样的查询:

UPDATE mytable
SET mycol = mycol +
           (CASE
              WHEN id = ? AND $bool THEN 5
              WHEN id = ? AND $bool THEN 10
              WHEN id = ? AND $bool THEN 15
              WHEN id = ? AND $bool THEN 20
           END)
WHERE id IN (?, ?, ?, ?)

此^查询有效。但正如你所看到我写了一个常量条件$bool - 这是一个PHP变量,它多次包含10。现在我正在寻找一种MySQL语法,让我可以为所有情况编写一次$bool。这可能吗?

1 个答案:

答案 0 :(得分:3)

您可以使用IF

UPDATE mytable
SET mycol = mycol + IF($bool, (CASE
                                  WHEN id = ? THEN 5
                                  WHEN id = ? THEN 10
                                  WHEN id = ? THEN 15
                                  WHEN id = ? THEN 20
                               END), 0)
WHERE id IN (?, ?, ?, ?)

如果$booltrue,则CASE表达式返回的值将添加到mycol,否则会添加0