加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 执行查询的问题(不在GROUP BY中)

发布时间:2020-12-13 17:08:50 所属栏目:PHP教程 来源:网络整理
导读:我正在使用 PHP并尝试在MySQL上执行查询, 当我使用let说的MySqlYog执行此查询时,我得到了结果,一切似乎都没问题. 查询: SELECT start_time AS `Date`,COUNT(1) AS `Count` FROM offline_execution_jobs WHERE start_time = NOW() - INTERVAL 365 DAYAND app
我正在使用 PHP并尝试在MySQL上执行查询,

当我使用let说的MySqlYog执行此查询时,我得到了结果,一切似乎都没问题.

查询:

SELECT 
  start_time AS `Date`,COUNT(1) AS `Count` 
FROM
  offline_execution_jobs 
WHERE start_time >= NOW() - INTERVAL 365 DAY
AND application_name LIKE 'SPLAT-ROLLING' OR application_name LIKE 'SPLAT'
GROUP BY (WEEK(start_time))
ORDER BY `Date` ASC ;

但问题是当我尝试从PHP执行查询时:

我收到这个错误:

Invalid query: 'nolio_db.offline_execution_jobs.start_time' isn't in GROUP BY

如果有人遇到过这个问题,我会很高兴听到如何克服它吗?

我需要以下列格式输出GROUP BY:

第一列中的DATE格式的一周的第一天和作为第二列的事件的计数.

2011-01-09 03:28:54 | 38

解决方法

如果Date应该是表中找到的周的第一个start_time值,而不是根据日历的一周的第一天,那么您可以简单地聚合start_time,如下所示:

SELECT 
  MIN(start_time) AS `Date`,COUNT(1) AS `Count` 
FROM
  offline_execution_jobs 
WHERE start_time >= NOW() - INTERVAL 365 DAY
AND application_name LIKE 'SPLAT-ROLLING' OR application_name LIKE 'SPLAT'
GROUP BY (WEEK(start_time))
ORDER BY `Date` ASC ;

顺便说一句,您可能不应该仅通过WEEK(start_time)进行分组.去年日期可能具有相同的周数,因此您的查询将分组不同的周数.要解决这个问题,您只需将YEAR(start_time)添加到GROUP BY列表:

SELECT 
  MIN(start_time) AS `Date`,COUNT(1) AS `Count` 
FROM
  offline_execution_jobs 
WHERE start_time >= NOW() - INTERVAL 365 DAY
AND application_name LIKE 'SPLAT-ROLLING' OR application_name LIKE 'SPLAT'
GROUP BY YEAR(start_time),WEEK(start_time)
ORDER BY `Date` ASC ;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读