MySql エンジンにはシステム変數(shù) 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 句で名前が指定されておらず、句に依存していない非集計(jì)列を參照しています。
(1) PHPMyAdmin
無効化: ONLY_FULL_GROUP_BYモード
SQLモード変數(shù)を値から削除
ONLY_FULL_GROUP_BYText
######または######
(2) SQL/コマンドプロンプト
コマンド ONLY_FULL_GROUP_BY モードを?qū)g行して、
を無効にします。
リーリー
######または######
(3) SELECT *
は使用しないでください。
ONLY_FULL_GROUP_BY モードを無効にせず、代わりに
SELECT
group by 句に現(xiàn)れる列、または集計(jì)関數(shù) (MAX、
MIN
SUM、
) を持つ列を指します。 COUNT など) 列
######重要######
point(1) または point(2) を使用して行われた変更は永続的に設(shè)定されず、再起動するたびに復(fù)元されます。
したがって、これを構(gòu)成ファイル (たとえば、
[mysqld] セクション
/etc/mysql/my.cnf
: sql_mode
or
値から ONLY_FULL_GROUP_BY
という単語を削除し、ファイルを保存します。
注
: sql_mode変數(shù)が構(gòu)成ファイル內(nèi)に見つからない場合は、ファイルの最後に次の2行を挿入してください。
リーリー
###これ###
この問題は、次のコマンドを使用して MySQL の SQL モードを変更するだけで解決します。 リーリー
私にも効果があります... これを使用したのは、プロジェクトに同様のクエリが多數(shù)あったため、この SQL モードをonly_full_group_byに変更しただけです。
または、単純に SELECT ステートメントで指定されたすべての列を GROUP BY 句に含めます。 sql_mode は有効のままにすることができます。###ありがとう... :-)###
更新日: 2023年7月14日
SQL スキーマの変更は回避策ですが、構(gòu)造化クエリ言語のベスト プラクティスは、すべての (SELECT *...) 列の選択を避け、代わりに @Tim Biegeeisen のようなグループ化された列に対して集計(jì)関數(shù)を使用することです。
https ://stackoverflow.com/a/41887524/3602846以下の回答で言及されています