获取两个mysql选择之间的值的差异

时间:2017-10-25 08:57:22

标签: php mysql function

我有两个正在运行的MySQL查询:

SELECT MAX(value) as value FROM data WHERE value_id = '123' AND DATE(time) = subdate(CURDATE(), 1)

和第二个查询:

SELECT MAX(value) as value FROM data WHERE value_id = '123' AND DATE(time) = subdate(CURDATE(), 2)

两个查询几乎相同。他们给了我前一天(2017-10-24)的最高值和前一天的最高值 - 前一天(2017-10-23)。

现在我现在,mysql没有实现减号功能。但我必须计算差异。关于NOT IN功能我很红,但我无法正确使用此功能......

thx for help!

1 个答案:

答案 0 :(得分:1)

您可以在单个查询中使用CASE语句来获取最大值,然后在外部查询中使用减法

SELECT value1 - value2 as diff
FROM (
    SELECT 
    MAX(CASE WHEN DATE(time) = subdate(CURDATE(), 1) THEN value ELSE 0 END) as value1,
    MAX(CASE WHEN DATE(time) = subdate(CURDATE(), 2) THEN value ELSE 0 END) as value2
    FROM data 
    WHERE value_id = '123'
) a

如果你不知道哪个值会更大,上面的结果可以产生负值也可以处理这个问题在外部查询中添加CASE

SELECT CASE WHEN value1 >= value2
       THEN value1 - value2
       ELSE value2 - value1
       END as diff
FROM (....) a