【问题标题】:MySQl Error : #1140 - Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clauseMySQl 错误:#1140 - 如果没有 GROUP BY 子句,则混合没有 GROUP 列的 GROUP 列 (MIN(),MAX(),COUNT(),...) 是非法的
【发布时间】:2015-09-15 12:16:36
【问题描述】:

我有一个查询要从选择总和和列值的表中计算每列的总和。

    $query = "select sum(salleryallowance), 
sum(entertainmentexp),
sum(depreciation), 
sum(electricity), 
sum(securitygard),
sum(machinaryrepaire), 
sum(totalrepairing),
sum(othermaintanaice),
sum(postal_charge),
sum(officeexp), 
sum(stationary),
sum(rent_lease_thresher), 
sum(rent_tractor), 
sum(traivlingallowance),
sum(transportaion_cost), 
sum(bank_commition), 
sum(total_exp),
sum(interest_earned), 
bit_farm.name as fname, 
bit_regional.name as rname 
from bit_income_expenditure 
inner join bit_farm on bit_income_expenditure.farm_id = bit_farm.id 
inner join bit_regional on bit_income_expenditure.region_id = bit_regional.id
";
$fetch = mysql_query($query);

$row = mysql_fetch_array($fetch);

// and print my output

echo $row[0]; //and so on....

当我执行此代码时,它显示以下错误:

如果没有 GROUP BY 子句,混合没有 GROUP 列的 GROUP 列 (MIN(),MAX(),COUNT(),...) 是非法的

我该如何解决这个错误?

【问题讨论】:

  • 这是您的查询错误。如果您需要帮助,请发布完整的查询。
  • 这是我的实际查询......@AdrianBR
  • 您的查询是非标准 sql,它是 sql 标准的非法分组,因为非聚合列与聚合且没有分组依据混合在一起。您要么需要 max() 它们以选择特定值,要么按它们分组。我指的列是 bit_farm.name 作为 fname,bit_regional.name 作为 rname
  • 谢谢它正在工作

标签: php mysql


【解决方案1】:

您的select 子句包括:

 bit_farm.name as fname, bit_regional.name as rname 

默认情况下,MySQL 会接受此设置,但您的系统必须具有默认设置才能符合 ANSI。

这取决于你想要什么。如果您想为每个“农场”和“地区”设置不同的值,请添加:

 group by bit_farm.name, bit_regional.name 

如果您想要一个总数,请从select 中删除这些列。

【讨论】:

  • 是的,在删除这两列后它可以工作,但我需要这些列,并且在添加 group by 之后仍然显示此错误:#1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“按 bit_farm.name 作为 fname,bit_regional.name 作为 rname from bit_income_expe”附近使用正确的语法
【解决方案2】:

如果您使用任何函数,如 sum()、avg()、count()...,那么默认情况下,它将对所有数据进行求和/计数/平均,但如果您使用要分类的任何其他列你的 sum/count/avg 那么你必须在 where 子句之后提到 group by,所以你的查询应该是-

select sum(salleryallowance), 
sum(entertainmentexp),
sum(depreciation), 
sum(electricity), 
sum(securitygard),
sum(machinaryrepaire), 
sum(totalrepairing),
sum(othermaintanaice),
sum(postal_charge),
sum(officeexp), 
sum(stationary),
sum(rent_lease_thresher), 
sum(rent_tractor), 
sum(traivlingallowance),
sum(transportaion_cost), 
sum(bank_commition), 
sum(total_exp),
sum(interest_earned), 
bit_farm.name as fname, 
bit_regional.name as rname 
from bit_income_expenditure 
inner join bit_farm on bit_income_expenditure.farm_id = bit_farm.id 
inner join bit_regional on bit_income_expenditure.region_id = bit_regional.id
group by bit_farm.name,bit_regional.name;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-11
    • 2020-04-02
    • 2014-09-09
    • 2019-02-11
    • 2020-07-05
    • 2010-11-17
    • 2016-01-10
    相关资源
    最近更新 更多