Mysql SQL代码错误(偏移量0行仅获取前10行)
我想为家庭助理确定一天的平均温度。我已经将传感器连接到家庭助理,家庭助理将数据发送到phpmyadmin。我无法通过home assistant单独发送传感器,但它们都列在文件夹状态中。见下文 通过home assistant发送sql代码,我可以在数据库中搜索值。所以现在我试图找到最后100次测量的平均值+/-1天。为了实现这一点,我编写了以下sql代码Mysql SQL代码错误(偏移量0行仅获取前10行),mysql,sql-fetch,Mysql,Sql Fetch,我想为家庭助理确定一天的平均温度。我已经将传感器连接到家庭助理,家庭助理将数据发送到phpmyadmin。我无法通过home assistant单独发送传感器,但它们都列在文件夹状态中。见下文 通过home assistant发送sql代码,我可以在数据库中搜索值。所以现在我试图找到最后100次测量的平均值+/-1天。为了实现这一点,我编写了以下sql代码 SELECT AVG(`state`) FROM states WHERE state_id > (select state_id
SELECT AVG(`state`)
FROM states
WHERE state_id > (select state_id
FROM states
WHERE entity_id='sensor.weatherstation_ground_temperature'
AND state <> unknown
ORDER BY state_id DESC
OFFSET 0 ROWS FETCH FIRST 100 ROWS ONLY)
如果我在phpmyadmin中键入此项,则会出现以下错误:
1064-第1行中用于“偏移量0行仅获取前100行限制0,25”的语法中存在错误
我的问题是:我做错了什么,或者有更好的方法吗?fetchfirst在MySQL中不存在;你需要限制
查询中的其他问题:
使用LIMIT的子查询不能与IN运算符一起使用:您可以改为使用联接
状态未知应拼写为状态“未知”。这是一个语法错误
旁注:偏移量0是默认值,因此我可以在这里忽略。Frech first rows only不是mysql语法。请改用limit。对不起,sql对我来说是全新的。当我输入代码时,仍然得到一个错误:1054-字段列表中的未知列“s.state”,我想这可能是它存储的文件夹和列sensor_logging.state。我应该在这段代码中更改什么?@Tibert:对不起,有一个拼写错误,我刚刚修复了它,你能再试一次吗?代码正常,但输出为空,传感器没有注册数字。很抱歉我的错误用荷兰语拼写了一些东西。非常感谢你!!这件事花了我很长时间。
SELECT AVG(s.`state`)
FROM states s
INNER JOIN (
SELECT state_id
FROM states
WHERE entity_id='sensor.weatherstation_ground_temperature' AND state <> 'unknown'
ORDER BY state_id DESC
LIMIT 100
) x ON x.state_id = s.state_id