如果条件列为真,则添加值

Add values if condition column is true

我有一个 MySql 查询,如下所示:

SELECT o.id, 
       o.priorytet_1 + 
       o.priorytet_2 +
       o.priorytet_3 AS bonus 
FROM obiekty o 
WHERE o.ac=1 
GROUP BY o.id 
ORDER BY `o`.`id` ASC 

priorytet_1, priorytet_2 and priorytet_3 列旁边我有 priorytet_1_valid, priorytet_2_valid, priorytet_3_valid 我存储日期的地方,例如 priorytet_1 是有效的。

我只想添加那些日期为 < now() 的列。

类似于:

SELECT o.id, 
       if (o.priorytet_1_valid < now()) o.priorytet_1 + 
       if (o.priorytet_2_valid < now()) o.priorytet_2 + 
       if (o.priorytet_3_valid < now()) o.priorytet_3 AS bonus 
FROM obiekty o 
WHERE o.ac=1 
GROUP BY o.id 
ORDER BY `o`.`id` ASC

感谢您的帮助!

尝试:

SELECT o.id, 
       SUM(IF (o.priorytet_1_valid < NOW(), o.priorytet_1, 0) + 
           IF (o.priorytet_2_valid < NOW(), o.priorytet_2, 0) + 
           IF (o.priorytet_3_valid < NOW(), o.priorytet_3, 0)) AS bonus
FROM obiekty o 
WHERE o.ac=1 
GROUP BY o.id 
ORDER BY `o`.`id` ASC

您可能想使用 SUM,因为您有一个 GROUP BY 子句。上述查询中使用的 SUM 函数 有条件地 添加字段 o.priorytet_1, o.priorytet_2, o.priorytet_3 以防相应的 'valid' 字段早于当前 date/time .