42

次のエラーが表示されます。

Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'world.country.Code' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

次のクエリを実行する場合:

select countrylanguage.language, country.code, sum(country.population*countrylanguage.percentage/100)
from countrylanguage
join country on countrylanguage.countrycode = country.code
group by countrylanguage.language
order by sum(country.population*countrylanguage.percentage) desc ;

MySQL ワールド テスト データベース ( http://dev.mysql.com/doc/index-other.html ) を使用します。なぜこれが起こっているのか分かりません。現在 MYSQL 5.7.10 を実行しています。

何か案は???:O

4

2 に答える 2

31

@Brian Rileyがすでに言ったように、選択した列を1つ削除する必要があります

select countrylanguage.language ,sum(country.population*countrylanguage.percentage/100)
from countrylanguage
join country on countrylanguage.countrycode = country.code
group by countrylanguage.language
order by sum(country.population*countrylanguage.percentage) desc ;

またはグループに追加します

select countrylanguage.language, country.code, sum(country.population*countrylanguage.percentage/100)
from countrylanguage
join country on countrylanguage.countrycode = country.code
group by countrylanguage.language, country.code
order by sum(country.population*countrylanguage.percentage) desc ;
于 2016-01-21T00:32:44.950 に答える
-2

country.codegroup byステートメントに含まれておらず、集計ではありません (集計関数にラップされています)。

https://www.w3schools.com/sql/sql_ref_sqlserver.asp

于 2016-01-21T00:30:37.140 に答える