Mysql 如果条件列为true,则添加值

Mysql 如果条件列为true,则添加值,mysql,sum,add,Mysql,Sum,Add,我有一个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和priorytet_3列旁边,我有priorytet_1\u valid、priorytet

我有一个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和priorytet_3
列旁边,我有
priorytet_1\u valid、priorytet_2\u valid、priorytet_3\u valid
存储日期,例如
priorytet_1
对其有效

我只想添加那些列,日期是

比如:

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
选择o.id,
如果(o.priorytet_1_valid
谢谢你的帮助

试试看:

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
选择o.id,
求和(如果(o.priorytet_1_valid
您可能想使用
SUM
,因为您有一个
groupby
子句。上述查询中使用的
SUM
函数有条件地添加字段
o.priorytet_1、o.priorytet_2、o.priorytet_3
,以防相应的“有效”字段早于当前日期/时间