我有两个正在运行的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!
答案 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