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

推薦する

ウェブページの読みやすさを向上させるいくつかの方法

1. 対照的な色を使用します。ここでのコントラストとは、テキストの色と背景色のコントラストを指します...

知らないかもしれない実用的なTypeScriptのヒント

目次序文関数のオーバーロードマッピングタイプ部分的、読み取り専用、Null 可能、必須選択、記録除外...

CSS3はウェブサイトの製品表示効果図を実現します

この記事では、CSS3 を使用した Web サイトの商品表示の効果を紹介し、皆さんと共有します。詳細...

Linux で PyCurl のエラーを解決する方法

「curl-config を実行できませんでした」の解決策 pycurl のダウンロード/解凍 (p...

CSS3 と JavaScript を使用して Web カラー ピッカーのサンプル コードを開発する

この例の Web カラー ピッカー機能は、ページ効果を実現するために CSS3 を使用します。つまり...

HTML内のフレームセットタグが正常に表示されない原因の解析と解決方法

<frameset></frameset>は皆さんもよくご存知のものです。こ...

JavaScriptを使用して独自のAjax関数を定義する

ネイティブJSによって開始されたネットワークリクエストは、クエリ文字列の形でサーバーに送信されるため...

Linux システムで TCP 接続を作成するプロセスの紹介

目次LinuxでTCPを作成する手順サーバクライアントTCP確立プロセスサンプルコードLinuxでT...

MySQL の「特殊キーが長すぎます」の解決策

目次解決策1解決策2テーブルを作成するときに、興味深い問題に遭遇しました。「指定されたキーが長すぎま...

Linux ssh サービス情報と実行ステータスを表示する方法

Linux での ssh サービス構成など、ssh サーバー構成に関する記事は多数あります。ここでは...

JavaScript の useRef と useState の紹介

目次1. useStateフック2. useRefフック3. useRef と useState 4...

Tencent Cloud Serverの構築方法を説明します(グラフィックチュートリアル)

この記事は元々ブロガーのWeiwei Miaoによって書かれたものです。ブログホームページ: htt...

VMware14 に CentOS 7 をインストールするグラフィック チュートリアル

CentOS の紹介CentOS は、Red Hat Linux が提供する無料で利用できるソースコ...

プロセスごとにネットワーク帯域幅を監視する Linux ツール Nethogs のインストールと展開

概要Linux 用のオープン ソース ネットワーク監視ツールは数多くあります。たとえば、帯域幅の使用...

Windows 10 と MySQL 5.5 のインストールとインストールなしの使用の詳細なチュートリアル (画像とテキスト)

この記事では、Windows 10環境でのMySQL 5.5のインストールと使用方法を紹介します。リ...