P粉5236250802023-08-21 10:10:51
MySQL エンジンにはシステム変数 ONLY_FULL_GROUP_BY
があります。
MySQL バージョン 5.7.5 以降 : ONLY_FULL_GROUP_BY
SQL モードはデフォルトで有効になります。
バージョン 5.7.5 より前: ONLY_FULL_GROUP_BY
はデフォルトでは有効になっていません。
ONLY_FULL_GROUP_BY
SQL モードが有効になっている場合 (バージョン 5.7.5 以降はデフォルトで有効になっています)、MySQL はクエリ選択リスト、HAVING
条件、または ORDER BY# を拒否します。 ## このリストは、
GROUP BY 句で名前が指定されておらず、その機能にも関連していない非集計列を参照しています。
(1) PHPMyAdmin
無効化: ONLY_FULL_GROUP_BYモード
SQLモード変数を値から削除
ONLY_FULL_GROUP_BYText
######または######
(2) SQL/コマンドプロンプト
コマンド ONLY_FULL_GROUP_BY モードを実行して、
を無効にします。
リーリー
######または######
(3) SELECT *
は使用しないでください。
ONLY_FULL_GROUP_BY モードを無効にせず、代わりに
SELECT
group by 句に現れる列、または集計関数 (MAX、
MIN
SUM、
) を持つ列を指します。 COUNT など) 列
重要なヒント
ポイント (1) またはポイント (2) を使用して行われた変更は永続的な設定ではなく、再起動するたびに復元されます。
設定ファイル
:
変数名
:
または sql-mode
値から ONLY_FULL_GROUP_BY という単語を削除し、ファイルを保存します。
注
:
変数が構成ファイル内に見つからない場合は、ファイルの最後に次の2行を挿入してください。 リーリー
P粉1210816582023-08-21 00:49:48
この問題は、次のコマンドを使用して MySQL の SQL モードを変更するだけで解決できます。 リーリー
それは私にも効果があります...この方法を使用したのは、プロジェクト内に同様のクエリが多数あるため、SQL モードをonly_full_group_by に変更しただけです。
または、単純に SELECT ステートメントで指定されたすべての列を GROUP BY 句に含めます。 sql_mode は有効のままにすることができます。
###ありがとう... :-)###
更新日: 2023年7月14日
https://stackoverflow.com/a/41887524/3602846
以下の回答で言及されています