単語のグループ化シーケンスと複数フィールドのグループ化のための 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は画像切り替え効果を実現

推薦する

Centos7にTenda U12ワイヤレスネットワークカードドライバーをインストールする際の問題を解決する

解決プロセス:方法1: CentOS7.3 のデフォルトのカーネル バージョンは低く、3.10.0-...

よく使用される入力テキストボックスの内容は自動的に垂直方向に中央揃えされ、クリックするとデフォルトのプロンプトテキストは空になります。

3つの機能: 1. コンテンツの垂直方向の自動中央揃え2. デフォルトのプロンプトテキストは灰色で表...

HTML テーブル マークアップ チュートリアル (48): CSS で変更されたテーブル

<br />では、CSS 構文を巧みに使用してテーブルを美しくする方法を見てみましょう。...

Vue プロジェクトはファイルダウンロードの進行状況バー機能を実装します

日常業務でファイルをダウンロードする一般的な方法は 2 つあります。 1 つ目は、サーバーのファイル...

iframe でページを開く方法

解決:リンクのターゲット属性値をターゲット フレームワーク名と同じに設定するだけです。具体的な手順:...

MySQLバイナリログを介してデータベースデータを復元する方法の詳細な説明

ウェブサイト管理者は、さまざまな理由や操作により、ウェブサイトのデータを誤って削除したり、ウェブサイ...

Vueはボタン切り替え画像を実装します

この記事では、ボタン切り替え画像を実現するためのVueの具体的なコードを例として紹介します。具体的な...

新しいカーネルをLinuxシステムに移植する手順

1. ubuntu16.04 イメージと対応する ubuntu16.04 カーネル バージョンのソー...

MySQL で null 値と空文字 ('') を区別する

日常の開発では、データベースの追加、削除、変更、クエリが一般的に行われるため、Mysql で NUL...

CentOS8 デプロイメント LNMP 環境で mysql8.0.29 をコンパイルしてインストールする方法の詳細なチュートリアル

1. 前提条件何度かインストールしているので、エラーについてはこれ以上説明しません。ちょっとわかりに...

CSS: 訪問した疑似クラスセレクタの秘密の記憶

昨日、a:visited を使用して「Guess You Like」の右側にある訪問済みテキストの色...

Ubuntu に MySQL 5.7 をインストールし、データ ストレージ パスを構成する方法

1. MySQLをインストールするこの記事はAPT経由でインストールされており、インストールされてい...

SQLはROW_NUMBER() OVER関数を使用してシーケンス番号を生成します。

構文: ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY...

vue3 再帰コンポーネントカプセル化の全プロセス記録

目次序文1. 再帰コンポーネント2. 右クリックメニューコンポーネント要約する序文今日、プロジェクト...

JS のディープコピーとシャローコピーの詳細

目次1. 浅いコピーとはどういう意味ですか? 2. ディープコピーとはどういう意味ですか? 3. デ...