Mysql 查询有什么问题?语法错误?不工作分组
我写了一个问题Mysql 查询有什么问题?语法错误?不工作分组,mysql,sql,sql-server,database,Mysql,Sql,Sql Server,Database,我写了一个问题 (SELECT TimeStamp, AVG(FwdHr), W FROM Meter_Data WHERE (TimeStamp Between 1370476500 AND 1370477100 AND DeviceID = '1' GROUP BY MeterID ORDER BY TimeStamp) UNION (SELECT TimeStamp, AVG(FwdHr), W FROM Meter_Data WHERE TimeStamp Bet
(SELECT TimeStamp, AVG(FwdHr), W
FROM Meter_Data
WHERE (TimeStamp Between 1370476500 AND 1370477100 AND DeviceID = '1'
GROUP BY MeterID ORDER BY TimeStamp)
UNION
(SELECT TimeStamp, AVG(FwdHr), W
FROM Meter_Data
WHERE TimeStamp Between 1370496006 AND 1370496606 AND DeviceID = '1'
GROUP BY MeterID ORDER BY TimeStamp)
我想从表中为两个时间戳之间的每个仪表id选择平均值(FwdHr)
然后将其与具有不同时间间隔的同一查询合并查询中的括号不平衡且不必要。
ORDER BY
和GROUP BY
只能应用于最终结果集,不能应用于中间结果。
括号也是不必要的
SELECT * FROM
(
SELECT TimeStamp, AVG(FwdHr), W
FROM Meter_Data
WHERE TimeStamp Between 1370476500 AND 1370477100
AND DeviceID = '1'
UNION
SELECT TimeStamp, AVG(FwdHr), W
FROM Meter_Data WHERE TimeStamp Between 1370496006 AND 1370496606
AND DeviceID = '1'
) as myTable
GROUP BY myTable.MeterID
ORDER BY myTable.TimeStamp
或者更好:使用或
而不是联合
SELECT TimeStamp, AVG(FwdHr), W
FROM Meter_Data
WHERE DeviceID = '1'
AND (TimeStamp Between 1370496006 AND 1370496606
OR
TimeStamp Between 1370476500 AND 1370477100 )
GROUP BY MeterID
ORDER BY TimeStamp
DeviceId是Varchar还是数字?同时发布您收到的错误。@KevinBowersox错误-您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解使用near“按时间戳分组顺序”UNION(选择时间戳,平均值(FwdHr)的正确语法,W来自“第1行为什么标记为
mysql
和sql server
?我很难发布我的解决方案,有些事情变得乱七八糟,但您有一个未关闭的左括号,大多数括号甚至都不是必需的。@KevinBowersox-您在尝试扩展答案或其他内容时是否遇到错误?可能会将答案放在桌面上pastebin和其他人可以尝试在中编辑它。此查询将返回什么?请使用ORthats尝试第二个查询,但不是因为这个。我已检查