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