select (SELECT power FROM newdb.newmeter where date(dt)=curdate() order by dt desc limit 1)
-(select Power from newdb.newmeter where date(dt)=(select date(subdate(now(), interval weekday(now()) day))) limit 0,1) as difference;
以上查询是我的编程的一部分,它给出了从一周的第1天到当周的当天存储的数据的差异。这些查询单独工作如下,并返回:
SELECT power FROM newdb.newmeter where date(dt)=curdate() order by dt desc limit 1;
结果:941690当前时间
select Power from newdb.newmeter where date(dt)=(select date(subdate(now(), interval weekday(now()) day))) limit 0,1;
结果93242.4在本周开始时(或今天作为其星期一的日子)
但是一旦我运行差异查询,这只是导致上述两者之间的差异:848447.8515625
这似乎真的很奇怪,不明白什么是错的呢?请帮忙。答案 0 :(得分:0)
您不会在第二个查询中通过dt订购,在周初寻找电源。这意味着您正在选择恰好具有匹配日期的未定义记录。对于简单的选择,表通常按插入顺序排序,但是当优化器认为可以使用其他顺序更快地运行查询时,它可以更改。基本上,如果您没有定义订单,则不关心订单。
答案 1 :(得分:0)
答案中你想要多少个小数位?使用DECIMAL(7,1)代替Power(我假设你想要一个小数位)而不是看看你得到了什么。
我倾向于避免浮动/双打,因为近似值会让你陷入困境。