查询有什么问题?错误的语法错误?小组不工作

时间:2013-06-13 09:19:46

标签: 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 Between 1370496006 AND 1370496606 AND DeviceID = '1' 
 GROUP BY MeterID ORDER BY TimeStamp)

我想从表格中为两个时间戳之间的每米标识选择平均值(FwdHr)

然后将它与具有不同时间间隔的相同查询结合起来

2 个答案:

答案 0 :(得分:0)

查询中的括号不平衡且不必要。

答案 1 :(得分:0)

ORDER BYGROUP 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

甚至更好:使用OR代替UNION

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