単語のグループ化シーケンスと複数フィールドのグループ化のための MySQL グループ方法

単語のグループ化シーケンスと複数フィールドのグループ化のための MySQL グループ方法

ここで商品テーブルを作成しました。その中のデータを見てみましょう。

mysql> 商品から * を選択します。
+----+------+-------+------------+-------------+-------------+
| id | s_id | b_id | goods_name | goods_price | goods_desc |
+----+------+-------+------------+-------------+-------------+
| 1 | 1 | 5 | 本 | 22.35 | 本 |
| 2 | 2 | 5 | ボール | 32.25 | ボール |
| 3 | 3 | 5 | NULL | 3.23 | NULL |
| 4 | 3 | 5 | macbook | 3.23 | 本 |
| 5 | 3 | 5 | リストブック | 2.30 | 本 |
| 6 | 1 | 1 | ナイスブック | 9999.00 | ナイスブック |
| 7 | 2 | 3 | googlebook | 25.30 | 本 |
+----+------+-------+------------+-------------+-------------+

1. s_idでグループ化

mysql> *、group_concat(goods_name) goods_names、group_concat(goods_desc) goods_descs、group_concat(id) ids、group_concat(goods_price) goods_prices を goods グループから s_id で選択します。
+----+------+-------+------------+-------------+------------+------------------+---------------+--------+----------------+
| id | s_id | b_id | goods_name | goods_price | goods_desc | goods_names | goods_descs | ids | goods_prices |
+----+------+-------+------------+-------------+------------+------------------+---------------+--------+----------------+
| 1 | 1 | 5 | 本 | 22.35 | 本 | 本、ナイスブック | 本、ナイスブック | 1,6 | 22.35,9999.00 |
| 2 | 2 | 5 | ボール | 32.25 | ボール | ボール、googlebook | ボール、ブック | 2,7 | 32.25,25.30 |
| 3 | 3 | 5 | NULL | 3.23 | NULL | macbook、リストブック | 本、ブック | 3、4、5 | 3.23、3.23、2.30 |
+----+------+-------+------------+-------------+------------+------------------+---------------+--------+----------------+

ここではgroup_concat()関数を使用して、グループに関する詳細情報を表示します。

上記の単一フィールドによるグループ化は非常に単純で、同じs_idを持つすべてのレコードがグループ化されます。

2. s_id、goods_descフィールドでグループ化

分析: ここでグループをクエリすると、データは最初に s_id に従ってグループ化され、次に各グループのデータは goods_desc に従ってグループ化されます。

mysql> *、group_concat(goods_name)、goods_names、group_concat(goods_desc)、goods_descs、group_concat(id)、ids、group_concat(goods_price)、goods_prices を goods グループから s_id、goods_desc で選択します。
+----+------+-------+-------------+-------------+------------+------------------+-----------+------+--------------+
| id | s_id | b_id | goods_name | goods_price | goods_desc | goods_names | goods_descs | ids | goods_prices |
+----+------+-------+-------------+-------------+------------+------------------+-----------+------+--------------+
| 1 | 1 | 5 | 本 | 22.35 | 本 | 本 | 本 | 1 | 22.35 |
| 6 | 1 | 1 | nicebook | 9999.00 | nicebook | nicebook | nicebook | 6 | 9999.00 |
| 2 | 2 | 5 | ボール | 32.25 | ボール | ボール | ボール | 2 | 32.25 |
| 7 | 2 | 3 | googlebook | 25.30 | 本 | googlebook | 本 | 7 | 25.30 |
| 3 | 3 | 5 | NULL | 3.23 | NULL | NULL | NULL | 3 | 3.23 |
| 4 | 3 | 5 | macbook | 3.23 | ブック | macbook、リストブック | ブック、ブック | 4,5 | 3.23,2.30 |
+----+------+-------+-------------+-------------+------------+------------------+-----------+------+--------------+

ここでのgoods_descsと上記のgoods_descsを比較すると明らかになります

次に、goods_priceでグループ化します。

mysql> *、group_concat(goods_name) goods_names、group_concat(goods_desc) goods_descs、group_concat(id) ids、group_concat(goods_price) goods_prices を goods グループから s_id、goods_desc、goods_price で選択します。
+----+------+-------+-------------+--------------+-------------+------------+-----------+--------------+
| id | s_id | b_id | goods_name | goods_price | goods_desc | goods_names | goods_descs | ids | goods_prices |
+----+------+-------+-------------+--------------+-------------+------------+-----------+--------------+
| 1 | 1 | 5 | 本 | 22.35 | 本 | 本 | 本 | 1 | 22.35 |
| 6 | 1 | 1 | nicebook | 9999.00 | nicebook | nicebook | nicebook | 6 | 9999.00 |
| 2 | 2 | 5 | ボール | 32.25 | ボール | ボール | ボール | 2 | 32.25 |
| 7 | 2 | 3 | googlebook | 25.30 | 本 | googlebook | 本 | 7 | 25.30 |
| 3 | 3 | 5 | NULL | 3.23 | NULL | NULL | NULL | 3 | 3.23 |
| 5 | 3 | 5 | リストブック | 2.30 | 本 | リストブック | 本 | 5 | 2.30 |
| 4 | 3 | 5 | macbook | 3.23 | 本 | macbook | 本 | 4 | 3.23 |
+----+------+-------+-------------+--------------+-------------+------------+-----------+--------------+

ここで、複数のフィールドをグループ化する場合、グループ化順序の後のフィールドは、前のフィールドの内容に従ってグループ化されることを理解するだけで十分です。

日常の開発タスクでは、データ テーブル内のグループ化フィールドに基づいて統計データを取得するために、MYSQL の GROUP BY グループ化を頻繁に使用します。たとえば、次のような構造を持つ学生のコース選択テーブルがあります。

テーブル: Subject_Selection

科目 学期 出席者
---------------------------------
ITB001 1 ヨハネ
ITB001 1 ボブ
ITB001 1 ミッキー
ITB001 2 ジェニー
ITB001 2 ジェームズ
MKB114 1 ヨハネ
MKB114 1 エリカ

各コースに登録した学生の数をカウントし、次の SQL を適用します。

件名、件数を選択(*)
Subject_Selection から
件名別にグループ化

以下の結果が得られます。

件名数
------------------------------
ITB001 5
MKB114 2

表には、5 人の学生が ITB001 を選択し、2 人の学生が MKB114 を選択したことが記録されています。

この結果の理由は次のとおりです。

GROUP BY X は、同じ X フィールド値を持つすべてのレコードを 1 つのグループにまとめることを意味します。

GROUP BY X, Yはどうでしょうか?

GROUP BY X, Y は、同じ X フィールド値と Y フィールド値を持つすべてのレコードを 1 つのグループにまとめることを意味します。

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。これについてもっと知りたい場合は、次のリンクをご覧ください。

以下もご興味があるかもしれません:
  • MySQLデータベースで外部キー制約を使用する必要があるかどうかの詳細な説明
  • MySQL でテーブル データを削除した後もディスク領域がまだ占有されているのはなぜですか?
  • MySQL インデックス データ構造の詳細な分析
  • MySQL の基本: グループ化関数、集計関数、グループ化クエリの詳細な説明
  • 時間別にグループ化された MySQL クエリ ステートメント
  • MySQL データベース グループ クエリの group by ステートメントの詳細な説明
  • MySQL テーブル結合クエリでグループ化と重複排除を実装する例
  • MySQLグループクエリ最適化方法
  • MySQL データの集約とグループ化

<<:  Linux で複数のファイルの名前を一括で変更する方法

>>:  Vueは画像切り替え効果を実現

推薦する

JS ES 新機能テンプレート文字列

目次1. テンプレート文字列とは何ですか? 2. 複数行のテンプレート文字列2.1 式付きテンプレー...

JavaScript初心者がよく犯す間違い

目次序文undefined と null の混同紛らわしい数値の加算と文字列の連結戻り文の改行の問題...

VSCode の JS フォーマットでセミコロンを自動的に追加または削除する方法について

導入js コード文の末尾にセミコロンを追加しても追加しなくても問題ありません。一般的に、チームで開発...

HTTP サーバーとクライアントのやり取りをシミュレートする Node.js+postman

目次1. NodeがHTTPサーバーを構築する2. HTTPサーバーがリクエストを取得する1. Po...

Alpine Dockerイメージフォント問題解決操作

1. フォントを実行し、フォント フォルダーを開いて、使用するフォント ファイルを見つけます。 2....

Linux で MySQL 5.7.19 をアンインストールする方法

1. MySQLが以前にインストールされていたかどうかを確認するコマンド: rpm -qa|grep...

ウェブページ入力ボックスのスタイルトリガー効果

<br />この例では、主に onblur と onFocus という 2 つのパラメー...

ウィンドウ環境で VScode を使用して仮想マシン MySQL に接続する方法

1. 仮想マシン側1. MySQLの設定ファイルを見つける:sudo vim /etc/mysql/...

Linuxでテキスト比較を実現するコツを教えます

序文コードを書く過程で、必然的にコードに何らかの変更を加えることになります。しかし、変更を加えるとき...

Vue で Google サードパーティ ログインを実装するためのサンプル コード

目次1. 開発者プラットフォームの構成問題を解決する1. 開発者プラットフォームの構成1. 開発者プ...

html2canvas を使用して、Baidu マップを含む Dom 要素を画像に処理するソリューション

問題 1: Baidu Map はタイル画像 (地図が写真で構成されている) を使用しています。ht...

フロントエンドの状態管理(パート2)

目次1. 再出発1.1. ストア(司書) 1.2. 状態(書籍) 1.3. アクション(図書貸出リス...

MySQLはSQL文を使用してテーブル名を変更します

MySQL では、SQL ステートメント rename table を使用してテーブル名を変更できま...

実行中のDockerコンテナのポートマッピングを変更する方法

序文docker run がコンテナを作成して実行するときに、-p を使用してポート マッピング ル...

エラー 1045 (28000): ユーザー ''root''@''localhost'' のアクセスが拒否されました (パスワード使用: YES) 実用的な解決策

昨日はデータベースへの接続に問題はありませんでしたが、今日はデータベースへの接続時にこのエラーが報告...