MySQL バージョン 5.7 以降で、SELECT リストの式 #1 が GROUP BY 句に含まれておらず、非集計が含まれているというグループ化エラーを解決します。

MySQL バージョン 5.7 以降で、SELECT リストの式 #1 が GROUP BY 句に含まれておらず、非集計が含まれているというグループ化エラーを解決します。

理由:

MySQL 5.7.5 以降では機能依存関係の検出が実装されています。 only_full_group_by SQL モードが有効になっている場合 (デフォルト)、MySQL は、選択リスト、条件、または順序リストが、機能的に依存せずに group by で名前が指定されていない非集計列を参照するクエリを拒否します。 (5.7.5 より前の MySQL では、機能の依存関係が検出されず、only_full_group_by はデフォルトで有効になっていませんでした。5.7.5 より前の動作の説明については、MySQL 5.6 リファレンス マニュアルを参照してください。)

sql_mode の内容を表示するには、次のコマンドを実行します。

mysql> セッション変数を表示します。
mysql> グローバル変数を表示します。
mysql> @@sql_mode を選択します。

セッションとグローバルのsql_modeの値は次のようになります。

ONLY_FULL_GROUP_BY、STRICT_TRANS_TABLES、NO_ZERO_IN_DATE、NO_ZERO_DATE、ERROR_FOR_DIVISION_BY_ZERO、NO_AUTO_CREATE_USER、NO_ENGINE_SUBSTITUTION

only_full_group_by の説明:

only_full_group_by: このオプションは、Oracle と同じグループ ルールを使用します。選択した列は、グループ内にあるか、集計列 (SUM、AVG、MAX、MIN) である必要があります。実際、個人的にはこの構成は distinctive に似ていると感じているので、削除してください。

解決する:

グローバル sql_mode を 'STRICT_TRANS_TABLES、NO_ZERO_IN_DATE、NO_ZERO_DATE、ERROR_FOR_DIVISION_BY_ZERO、NO_AUTO_CREATE_USER、NO_ENGINE_SUBSTITUTION' に設定します。<br data-filtered="filtered">セッション sql_mode を 'STRICT_TRANS_TABLES、NO_ZERO_IN_DATE、NO_ZERO_DATE、ERROR_FOR_DIVISION_BY_ZERO、NO_AUTO_CREATE_USER、NO_ENGINE_SUBSTITUTION' に設定します。<br data-filtered="filtered">

要約する

上記は、MySQL バージョン 5.7 以降でのグループ化エラー「SELECT リストの Expression #1 が GROUP BY 句内になく、非集計値を含む」の解決方法です。お役に立てれば幸いです。ご質問がある場合は、メッセージを残していただければ、すぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。
この記事が役に立ったと思われた方は、ぜひ転載していただき、出典を明記してください。ありがとうございます!

以下もご興味があるかもしれません:
  • 単語のグループ化シーケンスと複数フィールドのグループ化のための MySQL グループ方法
  • MySql Group Byは複数のフィールドのグループ化を実装します
  • Mysqlはグループによるソートを使用する
  • MySQL で GROUP BY を使用して最初の N レコードを取得する方法
  • MySQLグループクエリGroup Byの実装原理の詳細な説明
  • MySQL のグループ化により、group by と order by の調査で各グループの最初の数件のレコードを取得します (ランキング)
  • 各グループの最新データを取得するためにMySQLベースのグループを実装する

<<:  nginxフォワードプロキシとリバースプロキシの詳細な説明

>>:  JSはじゃんけんゲームを実装します

推薦する

Docker ネットワークの原理とカスタム ネットワークの詳細な分析

Docker はホストマシン上のブリッジを仮想化します。コンテナを作成して起動すると、各コンテナには...

MySQLインデックスの基礎となるデータ構造の詳細

目次1. インデックスの種類1. B+ツリー2. MyISAM と InnoDB の B+ ツリー ...

IE で ClearType をオンにした後の透明フォントの問題の解決方法

IE で ClearType をオンにした後に発生する透明フォントの問題を解決するには、透明要素に背...

Linux仮想マシンの静的IPアドレスを構成するための手順を完了します

序文多くの場合、仮想マシンを使用します。たとえば、一部のテストは検出されません。何かを壊すことを心配...

Vuexはシンプルなショッピングカートを実装します

この記事では、参考までに、Vuex の具体的なコードを共有して、簡単なショッピングカートを実装します...

CentOS仮想マシンの時刻を変更する方法

上はシステム時間、下はハードウェア時間です。ここでは変更を加えているので、同じくらいの速さになってい...

Nginx 最適化サービスで Web ページ圧縮を実装する方法

リソースを節約するためにWebページの圧縮を設定する1.まず、設定を変更しましょう vim /usr...

Vue マウスホイールスクロール切り替えルーティング効果を実装する方法

ルート ルーティング コンポーネント (アプリの下のルート ルーティング コンポーネント。子コンポー...

ElementUI のネストされたテーブルに基づいて複数選択を実装するためのサンプル コード

序文:私は友人のプロジェクトのバグを修正するのを手伝ったのでこれを書きました。この関数を書くのは初め...

JS での filter() 配列フィルターの使用

目次1. はじめに2. 方法の紹介3. 使用例要約する1. はじめに配列フィルターは、フロントエンド...

HTML と埋め込み Flash の両方におけるスクロールバーの分析と処理

開発を行う際に、次のような状況に遭遇することがよくあります。 a.swf が Web ページに追加さ...

JavaScript で localStorage を使用する方法

.NET の世界に参入したい開発者であれば、何が可能なのかを知る必要があります。 .NET Fram...

Apache ab を使用して HTTP パフォーマンス テストを実行する

MacにはApache環境が付属していますターミナルを開き、sudo apachectl -v と入...

Linux での MongoDB のインストールに関するチュートリアル

MongoDB はクロスプラットフォームであり、Windows と Linux の両方にインストール...

js 配列から重複を削除する 11 の方法

実際の業務や面接では、「配列の重複排除」の問題によく遭遇します。以下は、js を使用して実装された配...