首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >执行查询时出错(不在GROUP BY中)

执行查询时出错(不在GROUP BY中)
EN

Stack Overflow用户
提问于 2011-09-14 22:42:28
回答 1查看 1.7K关注 0票数 4

我正在使用PHP并尝试在MySQL上执行查询,

当我使用MySqlYog执行这个查询时,假设我得到了结果,一切似乎都很正常。

查询:

代码语言:javascript
复制
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执行查询时:

我得到了这个错误:

代码语言:javascript
复制
Invalid query: 'nolio_db.offline_execution_jobs.start_time' isn't in GROUP BY

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

我需要GROUP BY的输出格式如下:

第一列为日期格式的一周的第一天,第二列为事件计数。

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

EN

回答 1

Stack Overflow用户

发布于 2011-09-14 22:48:52

如果你是按start_time的星期分组,那么这就是你应该选择的(而不是日期本身)。否则,您将如何报告计数?您希望显示每周的计数,而不是每个日期的计数。

你在where子句中也有一个语义错误--你应该使用括号来明确地设置AND和OR的优先顺序。

代码语言:javascript
复制
SELECT WEEK(start_time) AS Week, 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 WEEK(start_time) ASC ;

此查询:

代码语言:javascript
复制
SELECT WEEK(start_time) AS Week, 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 WEEK(start_time) ASC ;

返回以下结果:

代码语言:javascript
复制
1 21
2 50
3 15

但我需要这样的东西:

代码语言:javascript
复制
2011-01-04 08:05:24  21
2011-01-09 03:28:54  8
2011-01-16 06:08:18  11
2011-01-23 06:06:50  32

当我从MySqlYog (MySql windows客户端)执行这个查询时,我得到了想要的结果,当我从php代码执行这个查询时,出现了问题:

代码语言:javascript
复制
SELECT start_time AS WEEK, 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 WEEK(start_time) ASC ;

下面是我从php得到的错误:

代码语言:javascript
复制
Invalid query: 'nolio_db.offline_execution_jobs.start_time' isn't in GROUP BY

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

这是它在代码中的样子:

代码语言:javascript
复制
$query =    "SELECT start_time AS Date, COUNT(1) AS Count 
                    FROM offline_execution_jobs 
                    WHERE start_time >= NOW() - INTERVAL 250 DAY 
                    AND (application_name LIKE 'SPLAT-ROLLING' OR application_name LIKE 'SPLAT' )
                    GROUP BY WEEK(start_time)
                    ORDER BY WEEK(start_time) ASC ;";

    //echo "<br><br>$query<br><br>";

    // Create connection to DB                              
    $conn = mysql_connect($db_host, $db_user, $dp_pass);

    if (!$conn) 
    {   
        echo "<br/>Can't connect: $db_host";
        die('Could not connect: ' . mysql_error());
    }
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7418231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档