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を使用して要素の完全なコードを変更します

推薦する

Echarts は 1 つのグラフ内で異なる X 軸を切り替える機能を実装します (サンプル コード)

レンダリング下の画像のような効果を実現したい場合は、読み続けてアニメーション画像に直接進んでください...

KVM 仮想化のインストール、展開、管理のチュートリアル

目次1.kvmの展開1.1 kvmのインストール1.2 kvm Web管理インターフェースのインスト...

Nginx サービス クイック スタート チュートリアル

目次1. Nginx の紹介1. Nginx とは何ですか? 2. Nginx を使用する理由3. ...

spanタグのスタイルに幅属性を設定する方法

span タグのスタイルに width 属性を直接設定すると、効果がないことがわかります。 disp...

フロントエンド例外 502 不正なゲートウェイの原因と解決策

目次502 不正なゲートウェイ エラーの発生1. 502 不正なゲートウェイ エラーとは何ですか? ...

Vue+SpringBoot で Alipay サンドボックス決済を実装するためのサンプルコード

まず、Alipay サンドボックスから一連のものをダウンロードします。多くのブログで取り上げられてお...

JavaScript で円形カルーセルを実装する

この記事では、円形カルーセルを実装するためのJavaScriptの具体的なコードを参考までに紹介しま...

vue+springbootでログイン認証コードを実現

この記事では、ログイン認証コードを実装するためのvue+springbootの具体的なコードを例とし...

MySQLがlocalhost経由でデータベースに接続できない問題に対する完璧な解決策

問題:あるサーバー上の PHP プログラムは、localhost アドレス経由でデータベースに接続で...

Mysql の大きな SQL ファイルの高速リカバリ ソリューションの共有

序文MySQL データベースを使用する過程では、データベースのバックアップと復元が必要になることがよ...

MySQL 5.7 のユニオンオール使用法のブラックテクノロジーを 5 分で学ぶ

MySQL 5.6 での union all のパフォーマンスパート 1:MySQL 5.6.25 ...

CSS 3.0 テキストホバージャンプ特殊効果コード

これは、CSS 3.0 で実装されたテキストのホバーとジャンプ効果です。効果は次のとおりです。 以下...

Linuxで大きなファイルを素早くコピーする方法

データをコピーリモートでデータをコピーする場合、通常は rsync コマンドを使用しますが、小さなフ...

VueコンポーネントライブラリElementUIはテーブルリストのページング効果を実現します

ElementUIはテーブルリストのページング効果のチュートリアルを実装しています。参考までに。具体...

js が CSS 属性 (値) のサポートを決定して通知する状況の分析

新しい CSS 機能を使用する場合、その互換性は常に考慮されます。おそらく、その互換性、どのブラウザ...