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

Php 获取两个mysql选择之间的值差,php,mysql,function,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-2

我有两个有效的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

有什么区别?什么减去什么?最高值之间的差异?只需减去它们——阅读有关标量子查询的内容。一切都很好,我的问题已经得到了回答。请编辑您的问题以使其清晰。有人猜到了你的意思&他们&你很幸运。这并不能使您的问题变得有用。@user3882511内部查询中的value2后面有多余的逗号,现已删除