MySQL ピボットテーブルについての簡単な説明

MySQL ピボットテーブルについての簡単な説明

次のような製品部品表があります。

一部

部品ID 部品タイプ 製品ID
--------------------------------------
1A1
2B1
3A2
4 B 2
5A3
6 B 3

次のようなテーブルを返すクエリが必要です:

製品ID パーツAID パーツBID
----------------------------------------
1 1 2
2 3 4
3 5 6

実際の実装では、数百万の製品部品が存在することになる。

1 回答

残念ながら、MySQL には PIVOT 関数はありませんが、集計関数と CASE ステートメントを使用してモデル化できます。動的バージョンの場合は、準備されたステートメントを使用する必要があります。

SET @sql = NULL;
選択
 GROUP_CONCAT(DISTINCT
  連結(
   'max(part_type = '''、part_type、''' の場合、part_id 終了) AS part_'、'_id'
  )
 ) を @sql に
から
 部品;
SET @sql = CONCAT('SELECT product_id,',@sql,' 
         部品から 
          GROUP BY product_id');
@sql からステートメントを準備します。
ステートメントの実行;
DEALLOCATE PREPARE ステートメント;

列が数個しかない場合は、静的バージョンを使用できます。

product_id、max(part_type = 'A' の場合、part_id 終了) を Part_A_Id として選択し、max(part_type = 'B' の場合、part_id 終了) を Part_B_Id として選択します。
部品から
product_idでグループ化

要約する

上記は、123WORDPRESS.COM が収集し、整理した MySQL 動的パースペクティブのすべてのコンテンツです。この記事が、MySQL 動的パースペクティブで発生するプログラム開発の問題の解決に役立つことを願っています。

以下もご興味があるかもしれません:
  • MySQL/MariaDB でピボット テーブルを実装する方法のサンプル コード

<<:  React+TypeScriptプロジェクト構築事例解説

>>:  Ubuntu 18.04 のすべての Python ライブラリを一度にアップグレードする方法

推薦する

js でショッピングモールのシミュレーションを実現

HTML、CSS、JSフロントエンドを学習中の皆さん、今回はショッピングモールの事例の実装をシェアし...

Docker-compose インストール db2 データベース操作

db2 データベースをホストマシンに直接インストールするのは面倒で、ユーザーや権限を巻き込むのも不便...

MySQLのREDOログとUNDOログの詳細な説明

MySQL ログ システムで最も重要なログは、REDO ログとアーカイブ ログです。後者は MySQ...

Windows Server 2019 のセットアップ方法 (画像とテキスト付き)

1. Windows Server 2019 のインストールVmware に Windows Se...

ReactにおけるRefの相互利用の詳細な説明

目次1. まずRefとは何かを説明しましょう2. フックでのrefの使用1. HTMLDomフックで...

Vueはリストのシームレスなスクロールを実装します

この記事の例では、リストのシームレスなスクロールを実現するためのvueの具体的なコードを参考までに共...

Mysql マルチテーブル結合クエリの実行の詳細について簡単に説明します。

まず、このブログのケースデモンストレーション テーブルを作成します。 create table a(...

Linux システム AutoFs 自動マウント サービスのインストールと構成

目次序文1. サービスプログラムをインストールする2. メイン設定ファイルを書く3. サブ構成ファイ...

MySQL 5.7.21 のインストールと設定方法のグラフィックチュートリアル (ウィンドウ)

ウィンドウ環境にmysql5.7.21をインストールします。詳細は次のとおりです。 1. MySQL...

CSS カウンターを使用して数字の順序付きリストを美しく表示する方法

Web デザインでは、Web サイトに表示されるデータの構造とコンテンツをユーザーが明確に理解できる...

CSS レイアウト チュートリアル: 垂直方向の中央揃えを実現する方法

序文最近、フロントエンドの知識をまとめており、いくつかのインタビューにも参加しました。インタビュー中...

Vue+element+springboot でファイルダウンロードの進行状況バー表示機能を実装する例

目次1. 需要背景2. 最適化計画3. 具体的な実施3.1 フロントエンドコード3.2 背景コード4...

Docker での Redis 接続の急増をトラブルシューティングした実践的な記録

土曜日、本番サーバー上の Redis サーバーが利用できなくなり、エラー メッセージは次のようになり...

閲覧時に作成されたWebページの下部にある余分な空白スペースを削除する方法

Dreamweaver または FrontPage を使用して HTML Web ページを作成する場...

JavaScript 関数のパフォーマンスを測定するさまざまな方法の比較

目次概要パフォーマンス.nowコンソール.time時間精度を短縮注意事項分割して征服する入力値に注意...