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

推薦する

Linux で MySQL データベースのインポートおよびエクスポート コマンドを実装する方法

1. mysqldump コマンドを使用してデータベースをエクスポートします (このコマンドのパスで...

JSインターセプト文字列の3つの方法の詳細な説明

JS には、文字列をインターセプトするための 3 つのメソッド、 slice() 、 substri...

WindowsシステムでMySQLデータベースを完全にアンインストールして、MySQLを再インストールします

1. コントロールパネルで、MySQLのすべてのコンポーネントをアンインストールします。コントロール...

Ubuntuで顔認識ログインを実装するための完全な手順

1. Howdyをインストール: howdyプロジェクトアドレス sudo add-apt-repo...

Vue.jsは音楽プレーヤーを実装します

この記事では、音楽プレーヤーを実装するためのVue.jsの具体的なコードを参考までに共有します。具体...

startup.bat をダブルクリックすると Tomcat がクラッシュする問題の解決方法の詳細な説明

Tomcat を学習したばかりのプログラマーにとって、これはよくある間違いです。 1. 環境変数の問...

vuex で履歴を実装するためのサンプルコード

私は最近、ユーザー操作を元に戻す、またはやり直す機能を備えたビジュアル操作プラットフォームを開発して...

MySQL シリーズ 4 SQL 構文

目次チュートリアルシリーズ1. SQL言語の紹介と仕様2. データベース操作1. ライブラリを作成す...

Vue.jsは画像切り替え機能を実装する

この記事では、画像切り替え機能を実装するためのVue.jsの具体的なコードを参考までに共有します。具...

Linux 環境で crontab コマンドを使用して、スケジュールされた定期的な実行タスクを設定します (PHP 実行コードを含む)

この記事では、Linux 環境で crontab コマンドを使用して、タスクの定期的な実行をスケジュ...

nohup /dev/null 2>&1 の使い方の詳しい説明

nohup コマンド: プロセスを実行しており、アカウントからログアウトしてもプロセスが終了しないと...

WeChatアプレットのスケルトン画面の実装例

目次スケルトンスクリーンとはアプレットでスケルトン画面を生成する方法導入方法表示と非表示ユーザーエク...

Dockerfile を使用して Docker でイメージを構築する方法

イメージを構築するこれまで、テストやデモンストレーションにさまざまなイメージを使用しました。多くの場...

MySQL 最適化チュートリアル: 大規模なページングクエリ

目次背景制限の最適化最適化方法1. カバーインデックスを使用する2. サブクエリの最適化3. 遅延連...

Vue ブラウザログアウトの実装例

目次1. beforeunload イベント2. アンロードイベント3. ソースコードプロジェクトの...