我正在使用 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/