Windows PC で MySQL 5.7.13 と WAMP サーバーを使用しています
私の問題は、このクエリを?qū)g行するときです
リーリーいつもこのエラーが発生します
SELECT リストの式 #1 は GROUP BY 句になく、非集計(jì)列 "returntr_prod.tbl_customer_pod_uploads.id" を含みますが、これは GROUP BY 句の列に機(jī)能的に依存していません。これは次のとおりです。 sql_mode=only_full_group_by 互換性がありません
最良の解決策を教えていただけますか?
この結(jié)果が必要です
リーリー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 モードが有効になっている場(chǎng)合 (バージョン 5.7.5 以降はデフォルトで有効になっています)、MySQL は選択リスト、HAVING
條件、または ORDER BY## を拒否します。 # リスト
GROUP BY 句で名前が指定されておらず、機(jī)能的にもそれらに依存していない非集計(jì)列を指します。
無効化
: ONLY_FULL_GROUP_BY モード
phpMyAdmin を使用している場(chǎng)合は、以下のスクリーンショットに示すように
変數(shù)を値から削除ONLY_FULL_GROUP_BY
Text
######または######
Disable
: 次のコマンドを?qū)g行して、ONLY_FULL_GROUP_BY モードを無効にします。
リーリー ######または######(3) SELECT *
ONLY_FULL_GROUP_BY
モードを無効にしないでください。ただし、
SELECT クエリで関連列を使用します。関連とは、
句に現(xiàn)れる列、または集計(jì)関數(shù) (MAX、MIN
、
、) を含む列を意味します。 COUNT
など)
######重要######
point(1) OR point(2) を使用して行われた変更は永続的に設(shè)定されず、再起動(dòng)するたびに復(fù)元されます。
したがって、変更が MySQL の再起動(dòng)後も持続するように、設(shè)定ファイル (例: 代碼>[mysqld] セクションの 代碼>/etc/mysql/my.cnf
変數(shù)名
sql_mode
OR
sql-mode
値から ONLY_FULL_GROUP_BY
注: 構(gòu)成ファイル內(nèi)に
sql_mode 変數(shù)が見つからない場(chǎng)合は、ファイルの最後に次の 2 行を挿入してください
リーリー
###これ###
この問題は、このコマンド
を使用して MySQL の SQL モードを変更することで簡(jiǎn)単に解決できます。 リーリーこれは私にも効果があります.. 私のプロジェクトにはこのようなクエリがたくさんあったため、これを使用しました。そのため、このSQLスキーマをonly_full_group_by
に変更しました。または、SELECT ステートメントで指定された GROUP BY 句にすべての列のみを含めます。 sql_mode は有効のままにすることができます。
###ありがとう...:-)###更新日: 2023 年 7 月 14 日
SQL スキーマの変更は 1 つの解決策ですが、構(gòu)造化クエリ言語(yǔ)のベスト プラクティスは、すべての (SELECT * ...) 列の選択を避け、代わりにグループ化された列に対して @Tim Biegeeisen のような集計(jì)関數(shù)を使用することです。