Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 结果之间的差异_Mysql - Fatal编程技术网

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