通过消除冗余来缩减MySQL查询

时间:2015-03-10 17:58:40

标签: mysql

我当前的MySQL查询看起来像

SELECT AVG(TIMEDIFF(time1, time2)), YEAR(time2), MONTH(time2), DAY(time2), HOUR(time2)     
FROM rr
WHERE time2 IS NOT NULL     
GROUP BY      
YEAR(time2),      
MONTH(time2,       
DAY(time2),       
HOUR(time2);

我现在要做的是现在按结果按结果按新结果按日期排序。有没有办法在不必指定

的情况下执行此操作
ORDER BY
  YEAR(time2)
  ...
  HOUR(time2)

一遍又一遍?

此外,有没有办法返回DateTime字段,而不必重新使用YEAR(time2), MONTH(time2)... HOUR(time2)列?我似乎可以减少相当多的冗余。

1 个答案:

答案 0 :(得分:0)

你可以这样做:

order by min(time2)

在MySQL中,你也可以这样做:

order by time2

但我建议使用聚合功能。

至于你问题的第二部分,你可以这样做:

select date(date_format(time2, '%Y:%m:%d %h:00:00'))