php - 用最后一个有效值替换零 Mysql

标签 php mysql sql

我正在使用 mysql 来存储我家的 Kwh 使用情况。我很少出错,并得到一个 0 值来存储。当我从我的表中提取值时,我不想得到那个 0,而是之前的最后一个有效值。

SELECT unix_timestamp(dataora) as time, kwhg 
FROM misure 
WHERE dataora BETWEEN '2013-10-08 00:00:00.000' AND '$data_scelta 23:59:59.997' 
GROUP BY date(dataora),hour(dataora)

我用上面的代码得到了下表:

+-------+-----------+
| time  | kwhg      | 
+-------+-----------+
|   9   |    2      |
|   10  |    3      |
|   11  |    0      |
|   12  |    4      |
|   13  |    0      |
+-------+-----------+`

我要获取

+--------+----------+
| time  | kwhg      | 
+-------+-----------+
|   9   |    2      |
|   10  |    3      |
|   11  |    3      |
|   12  |    4      |
|   13  |    4      |
+-------+-----------+`

并删除具有先前值的零。 有什么技巧可以做到吗?

最佳答案

您可以使用 MySQL 用户定义的变量返回当前行的 kwhg 值(如果它大于零),或者返回上一行定义的变量。

SELECT unix_timestamp(dataora) as time, @kwhg := IF(kwhg>0, kwhg, @kwhg) AS kwhg 
FROM misure 
WHERE dataora BETWEEN '2013-10-08 00:00:00.000' AND '$data_scelta 23:59:59.997' 
GROUP BY date(dataora),hour(dataora)

与@OddEssay 的回答一样,如果第一个条目为零,则无法得出非零值。在这种情况下,它将返回 @kwhg 的当前值,除非您之前在当前 session 中运行过查询,否则它可能为 NULL。

关于php - 用最后一个有效值替换零 Mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19633986/

相关文章:

php - 在php中显示获取mysql数据的结果

php - 在本地主机上运行 Wordpress,希望使其在 Windows Server 2003 上运行

sql - MySQL 查询。从三个表中选择数据

带有元键和值的 MySQL 查询

mysql - 如何在MySQL中选择字段具有最小值的数据?

mysql - 在很长一段时间内汇总分类帐。 (对账、快照、滚动总和?)

javascript - 样式更改未使用 javascript 生效

php - 通过 PHP 更改 URL

php - Predis - 捕获连接错误

php - 如何在 php mysql 中处理动态模式和动态数据?