問題:
GROUP BY 句に非集計列を含むクエリを実行すると、次のエラーが発生します:
#1055 - Expression of SELECT list is not in GROUP BY clause and contains nonaggregated column this is incompatible with sql_mode=only_full_group_by
理由:
このエラーは、 GROUP BY 句に含まれない SELECT リスト内の集計列。 MySQL バージョン 5.7.12 では、only_full_group_by SQL モードがデフォルトで有効になっており、より厳格なグループ化ルールが適用されます。
解決策:
このエラーを解決するには、次のいずれかを実行できます。 :
1.非集計列を GROUP BY 句に追加します。
これにより、クエリは GROUP BY 句内のすべての列に同じ値を持つ行のみを返すようになります。
SELECT libelle, credit_initial, disponible_v, SUM(montant) AS montant FROM fiche, annee, type WHERE type.id_type = annee.id_type AND annee.id_annee = fiche.id_annee AND annee = YEAR(CURRENT_TIMESTAMP) GROUP BY libelle, credit_initial, disponible_v ORDER BY libelle ASC;
2. Only_full_group_by SQL モードを無効にします:
これにより、クエリは GROUP BY 句内のすべての列に同じ値を持たない行を返すことができます。
sudo vim /etc/mysql/conf.d/mysql.cnf
ファイルの最後に次の行を追加します:
[mysqld] sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
保存して vim を終了します。 MySQL を再起動します:
sudo service mysql restart
MySQL を再起動すると、クエリはエラーなしで正常に実行されるはずです。
以上がMySQL の「SELECT リストの式が GROUP BY 句にありません」エラーを修正する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。