【问题标题】:Add values if condition column is true如果条件列为真,则添加值
【发布时间】:2017-02-08 13:56:31
【问题描述】:

我有一个如下所示的 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

感谢您的帮助!

【问题讨论】:

    标签: mysql sum add


    【解决方案1】:

    试试:

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

    【讨论】:

      猜你喜欢
      • 2020-06-25
      • 2012-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-29
      • 2021-02-15
      • 2013-05-04
      • 1970-01-01
      相关资源
      最近更新 更多