Mysql 结果之间的差异
我有一个显示以下结果的查询:Mysql 结果之间的差异,mysql,Mysql,我有一个显示以下结果的查询: SELECT meter.meter_serial, her060.node_address, her060.report_time, her060.node_reading FROM meter, her060 WHERE meter.node_address = her060.node_address AND meter.meter_serial = '31602193' ORDER BY her060.report_tim
SELECT
meter.meter_serial,
her060.node_address,
her060.report_time,
her060.node_reading
FROM
meter,
her060
WHERE meter.node_address = her060.node_address
AND meter.meter_serial = '31602193'
ORDER BY her060.report_time DESC
LIMIT 10
结果很好:
meter_serial node_address report_time node_reading
31602193 10164d995147 10/01/2014 0:36 777
31602193 10164d995147 8/01/2014 18:22 763
31602193 10164d995147 7/01/2014 6:04 724
31602193 10164d995147 6/01/2014 12:19 698
31602193 10164d995147 4/01/2014 23:55 669
31602193 10164d995147 3/01/2014 11:30 650
31602193 10164d995147 1/01/2014 23:06 624
31602193 10164d995147 31/12/2013 10:41 624
31602193 10164d995147 29/12/2013 22:17 624
31602193 10164d995147 28/12/2013 9:53 624
但是我想添加另一列来计算节点读数之间的差异
有人能建议怎么做吗?对该列使用自动递增字段或唯一键,以便减去上一行的值
**SELECT meter.meter_serial,
her060.node_address,
her060.report_time,
her060.node_reading ,
a.node_reading -b.node_reading
FROM
meter,
her060 a
inner join
her060
on a.id = b.id -1
WHERE meter.node_address = her060.node_address
AND meter.meter_serial = '31602193'
ORDER BY her060.report_time DESC
LIMIT 10**
您是指不同行之间的节点_读数的差异?节点_读数的差异是否意味着当前节点_读数与上一个节点_读数的差异?应如何进行计算?格式非常完美;-)可能的重复无法使用自动增量,因为表中还有其他仪表序列,无法知道它们的顺序。这看起来非常接近,但我想我遗漏了一些东西。当我运行它时,我在node_reading和previous中得到相同的值,这也意味着我在您的_difference中得到NULL。简单的
:
丢失,请更正它。请再试一次。很好的一个完美的工作感谢你的帮助堆
SELECT
meter.meter_serial,
her060.node_address,
her060.report_time,
her060.node_reading,
@previous - node_reading AS your_difference, /*here the variable holds the value of the previous row*/
@previous := node_reading /*here the variable gets assigned the value of the current row*/
FROM
meter
INNER JOIN her060 ON meter.node_address = her060.node_address
CROSS JOIN (SELECT @previous := (SELECT node_reading FROM her060 ORDER BY report_time DESC LIMIT 1)) variable_initialization_query_alias
WHERE
meter.meter_serial = '31602193'
ORDER BY her060.report_time DESC
LIMIT 10