mysql - 通过消除冗余来压缩 MySQL 查询

标签 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) 列进行重建?看来我可以减少相当多的冗余。

最佳答案

你可以这样做:

order by min(time2)

在 MySQL 中,您还可以这样做:

order by time2

但我建议使用聚合函数。

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

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

关于mysql - 通过消除冗余来压缩 MySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28970820/

相关文章:

mysql - MySQL 中何时使用单引号、双引号和反引号

php - 在一行中将数​​组插入数据库

mysql - 如何知道/获取liferay默认表的user_列名

php - 如何获取 "not in between these two dates"的查询结果

mysql - 如何将3个表与其他表中具有最大值的表组合起来

php - 为什么我的网站上的图片仍然按 id 升序显示,即使我使用 order by id desc?

mysql - 如何在shell中使用mysql字段

php - 用于比较两个逗号分隔值的 Mysql 查询

php - 使用php和mysql的多关键字搜索表单

php - 如何从 2 列中减去值