繁体   English   中英

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

[英]Get the difference of values between two mysql selects

我有两个可用的 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 功能感到不满,但我无法正确使用此功能...

谢谢你的帮助!

您可以在单个查询中使用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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM