mysql - 如果条件列为真则添加值

标签 mysql sum addition

我有一个如下所示的 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,以防相应的“有效”字段早于当前日期/时间。

关于mysql - 如果条件列为真则添加值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42115089/

相关文章:

javascript - 如何在时间复杂度为 Big O(N) 的循环内对数组部分求和

sql - PgSQL 上的累积值和有界总和

c++ - C++矩阵运算符+

c++ - operator+ 和 move 语义

javascript - JQuery 在多个页面添加循环

mysql - MONTH() 的 SUM 未正确计算

php - PHP MySQL 检索某个用户的信息

mysql - 在 MySQL 中创建最近 "x"天的累积循环 SUM

用于运行.txt文件的Mysql命令

php - 选择、计数和显示(按组?)