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 ライブラリを一度にアップグレードする方法

推薦する

Linux で iostat コマンドを使用するチュートリアル

序文運用・保守を行う人がスキルを持っていなければ、サーバーを操作するのに恥ずかしさを感じてしまうと言...

Vue要素ヘッダーにスラッシュを追加するための実装コード

<テンプレート> <div class="アプリコンテナ"&...

VUEはトークンログイン認証を実装

この記事では、トークンログイン認証を実装するためのVUEの具体的なコードを例として紹介します。具体的...

メタ宣言注釈の手順

メタ宣言注釈の手順: 1. モバイル ページと 1 対 1 で対応するすべての PC ページを分類し...

HTML ページをスクロールするときに一部のコンテンツを固定位置に固定する方法

この記事では主に、レイアウトに役立つ、HTML ページ内の一部のコンテンツを固定してスクロール時にス...

MySQL は対応するクライアント プロセスにどのように接続しますか?

質問特定の MySQL 接続について、それがどのクライアント プロセスからのものであるかをどのように...

Dockerリンクはコンテナの相互接続を実現します

目次1.1. IP経由のコンテナ間のネットワークアクセス1.2. コンテナ名またはコンテナIDによる...

MySQL テーブル全体の暗号化ソリューション keyring_file の詳細な説明

例示するMySql Community Edition は、5.7.11 以降、テーブルベースのデー...

テーブル適応とオーバーフローのいくつかの設定の詳細な説明

1. テーブル リセットの 2 つのプロパティ: ①border-collapse: collaps...

v-model 双方向バインディングデータを実装する vue カスタム コンポーネントのサンプル コード

プロジェクトでは、プロジェクトが呼び出すカスタム パブリック コンポーネントに遭遇します。通常、pr...

HTTPS の原則の説明

HTTPS ウェブサイトの構築コストが下がるにつれて、ほとんどのウェブサイトが HTTPS プロトコ...

テキストエリアをレイアウトしたときにテキストが左下にあり、サイズを変更できない問題の解決策

2つの小さな問題ですが、長い間私を悩ませていました。最初の質問テキストエリアの左側のテキストは常にテ...

HTML ドロップダウン ボックスの SELECT オプションを変更する複数の方法

フォームが送信されると、返された HTML ページが再レンダリングされ、SELECT コントロールの...

MySQL 文字セットの概要

目次文字セット比較ルール4つのレベルの文字セットと比較規則3つのシステム変数このノートは主にMySQ...

ソケット '/tmp/mysql.sock' 経由でローカル MySQL に接続できない解決策

エラーメッセージ:エラー 2002: ソケット '/tmp/mysql.sock' ...