我在加入后尝试分组时遇到错误1055

tyky79it  于 2021-07-29  发布在  Java
关注(0)|答案(3)|浏览(334)

我是sql新手,在发现如何在加入后进行分组时遇到了困难。目标是找出哪个国家养得最多。

SELECT x.country_id
     , x.pledged
     , y.id
     , y.name 
  FROM campaign x
  LEFT 
  JOIN country y
    ON x.country_id = y.id

这将显示所需的列,一切正常
当我加上:

GROUP BY country.name

GROUP BY campaign.country_id

我犯了一个我不明白的错误。
错误代码:1055。select列表的表达式#1不在group by子句中,它包含未聚合的列“kickstarter.campaign.country\u id”,该列在功能上不依赖于group by子句中的列;这与sql\u mode=only\u full\u group by不兼容

vawmfj5a

vawmfj5a1#

“groupby”的基本规则是,选择的列必须应用聚合函数,或者显示在groupby之后。尝试下面的一个,我们试图总结每个国家的所有认捐款项。

SELECT country.name, sum(campaign.pledged) country_pledged
FROM campaign LEFT JOIN country ON campaign.country_id = country.id
GROUP BY country.name ORDER BY campaign.pledged DESC
j2qf4p5b

j2qf4p5b2#

您需要按所有列分组(如 GROUP BY campaign.country_id, campaign.pledged, country.id, country.name )或者在选择列表中使用聚合函数。

nr7wwzry

nr7wwzry3#

下面的sql应该可以工作。请注意,您的GROUPBY和select子句应该是同步的,这样聚合才能工作。

SELECT country.name, count(1) ccount 
FROM campaign LEFT JOIN country ON campaign.country_id = country.id
GROUP BY country.name ORDER BY 2 DESC

相关问题