MySQL水平および垂直テーブル変換操作の実装方法

MySQL水平および垂直テーブル変換操作の実装方法

この記事では、例を使用して、MySQL の水平テーブルと垂直テーブル間の変換操作を実装する方法を説明します。ご参考までに、詳細は以下の通りです。

まずスコア表(縦の表)を作成します

テーブルuser_scoreを作成する
(
  名前varchar(20),
  科目varchar(20),
  スコア int
);
user_score(name,subjects,score) に values('张三','語文',60) を挿入します。
user_score(name,subjects,score) に values('张三','数学',70) を挿入します。
user_score(name,subjects,score) に values('张三','英语',80) を挿入します。
user_score(name,subjects,score) に values('李四','語文',90) を挿入します。
user_score(name,subjects,score) に values('李四','数学',100) を挿入します。

別のスコア表(横表)を作成する

テーブルuser_score2を作成する
(
  名前varchar(20),
  ユウェンint、
  シュシュエint、
  インユイント
);
user_score2(name,yuwen,shuxue,yingyu) に values('张三',60,70,80) を挿入します。
user_score2(name,yuwen,shuxue,yingyu) に values('李四',90,100,0) を挿入します。

縦の表を横の表に変換する

名前、合計を選択(case subject when 'Chinese' then score else 0 end) 
as '中国語',sum(case 科目 when '数学' then スコア else 0 end) 
'数学' の場合、sum(case 科目 when '英語' then スコア else 0 end) 
user_score から名前でグループ化して「英語」として;

縦の表を横の表に変換する

SELECT name,'yuwen' AS subject,yuwen AS score FROM user_score2 UNION ALL  
SELECT name,'shuxue' AS subject,shuxue AS score FROM user_score2 UNION ALL  
SELECT name,'yingyu' AS subject,yingyu AS score FROM user_score2 
ORDER BY name,subjects DESC; 

MySQL 関連のコンテンツに興味のある読者は、このサイトの次のトピックをチェックしてください: 「MySQL クエリ スキル」、「MySQL トランザクション操作スキル」、「MySQL ストアド プロシージャ スキル」、「MySQL データベース ロック関連スキルの概要」、および「MySQL 共通関数の概要」

この記事が皆様のMySQLデータベース設計に役立つことを願っています。

以下もご興味があるかもしれません:
  • MySQL の垂直テーブルを水平テーブルに変換する方法と最適化のチュートリアル

<<:  Nginx 仮想ホストの詳細な分析

>>:  Vue+Openlayerはmodifyを使用して要素の完全なコードを変更します

推薦する

CSS3のvar()を使用して実行時にscss変数の値を変更する詳細な説明

var() の紹介と使用法詳細 (MDN) IEは無効ですが、他の主流のブラウザは有効ですvar()...

CSS セレクタのグループ化の簡単な分析

セレクタのグループ化h2 要素と段落の両方を灰色にしたいとします。これを行う最も簡単な方法は、次のス...

Windows サーバー ポートを開きます (例としてポート 8080 を使用します)

ポートとは何ですか?私たちが通常参照するポートは、物理的な意味でのポートではなく、具体的には TCP...

ウェブページを作る前に、これらのいわゆる仕様を見てみましょう

この記事では、Web ページを作成する前に確認すべき、いわゆる仕様をいくつかまとめました。皆様のお役...

Dockerでrabbitmqをデプロイする際に発生した2つの問題

1. 背景DockerでRabbitMQをデプロイする際に、次の2つの問題が発生します。問題1: ス...

コード分​​析を実現するためのFastDFSとNginxの統合

FastDFSとNginxの統合:トラッカーは、負荷分散と高可用性のために Nginx と組み合わせ...

絵文字と問題解決のためのMySQL/Javaサーバーサポートの詳細な説明

この記事では、絵文字用の MySQL Java サーバーのサポートと問題解決方法について説明します。...

Nginx 1つのドメイン名で複数のプロジェクトにアクセスする方法の例

背景最近、複数のプロジェクトを展開する際に、1 つのドメイン名で複数のプロジェクトにアクセスする方法...

Linux で実行中のバックグラウンド プログラムを表示および終了する方法

Linux タスク管理 - バックグラウンド実行と終了fg、bg、ジョブ、&、ctrl + ...

Linux ファイル操作でよく使われるコマンドのまとめ

0. 新しい操作: mkdir abc #新しいフォルダを作成 touch abc.sh #新しいフ...

画像を読み込むための JavaScript キャンバス

この記事では、画像を読み込むためのJavaScriptキャンバスの具体的なコードを参考までに紹介しま...

ズームインとズームアウトの閉じるボタンを実現する CSS (サンプル コード)

この効果はブラウザ ページで最もよく見られます。まずは効果の画像をご覧ください。 上の図に示すように...

mysql の認証、起動、およびサービスの起動のための一般的なコマンド

1. 4つの起動方法: 1.mysqld MySQL サーバーを起動します: ./mysqld --...

中国語でのNginx設定パラメータの詳細な説明(負荷分散とリバースプロキシ)

PS: 最近、nginx を詳細に紹介している <<High-Performance ...

MySQL で複数の主キーが定義されているエラーの解決方法

主キーを作成するには 2 つの方法があります。 テーブルテーブル名を作成( フィールド名タイプ、 フ...