如果条件列为真,则添加值
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 .
我有一个 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 .