MySQL で行を列に変換したり、列を行に変換したりする詳細な例

MySQL で行を列に変換したり、列を行に変換したりする詳細な例

mysql 行から列へ、列から行へ

難しい文章ではないので、詳しく説明はしません。文章を読むときは、一文ずつ内側から外側へと分析してください。

行から列へ

図に示すようなテーブルがあります。ここで、クエリ結果の行を列に変換します。

1

テーブル作成ステートメントは次のとおりです。

テーブル `TEST_TB_GRADE` を作成します (
 `ID` int(10) NOT NULL AUTO_INCREMENT,
 `USER_NAME` varchar(20) デフォルト NULL,
 `COURSE` varchar(20) デフォルト NULL,
 `SCORE` float デフォルト '0'、
 主キー (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=1 デフォルト CHARSET=utf8;
TEST_TB_GRADE(USER_NAME, COURSE, SCORE)の値に挿入
(「張三」『数学』34)
(「張三」、「中国人」、58)、
(「張三」、「英語」、58)、
(『李斯』『数学』45)
(「李斯」、「中国人」、87)、
(「李斯」、「英語」、45)、
(「王武」『数学』76)
(「王武」、「中国人」、34)、
(「王武」、「英語」、89)

クエリステートメント:

ここでMAXが使用される理由は、NULLを防ぐためにデータのないポイントを0に設定するためです。

ユーザー名を選択、
  MAX(CASE コース WHEN '数学' THEN スコア ELSE 0 END ) 数学、
  MAX(CASE コース WHEN '中国語' THEN スコア ELSE 0 END) 中国語、
  MAX(CASE コース WHEN '英語' THEN スコア ELSE 0 END ) 英語 FROM test_tb_grade
USER_NAME でグループ化します。

結果:

2

列から行へ

図のようなテーブルがあります。クエリ結果が行にリストされることを期待します。

3

テーブル作成ステートメントは次のとおりです。

テーブル `TEST_TB_GRADE2` を作成します (
 `ID` int(10) NOT NULL AUTO_INCREMENT,
 `USER_NAME` varchar(20) デフォルト NULL,
 `CN_SCORE` float デフォルト NULL、
 `MATH_SCORE` float デフォルト NULL、
 `EN_SCORE` float デフォルト '0'、
 主キー (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=1 デフォルト CHARSET=utf8;
TEST_TB_GRADE2(USER_NAME, CN_SCORE, MATH_SCORE, EN_SCORE) の値を挿入する
(「張三」、34、58、58)、
(「李斯」、45、87、45)、
(「王武」76、34、89);

クエリステートメント:

test_tb_grade2 から user_name、'Language' COURSE、CN_SCORE を SCORE として選択します。
unit select user_name, '数学' COURSE, MATH_SCORE as SCORE from test_tb_grade2
結合により、test_tb_grade2 から user_name、'English' COURSE、EN_SCORE を SCORE として選択します。
ユーザー名、コースで並べ替えます。

結果:

4

読んでいただきありがとうございます。お役に立てれば幸いです。このサイトをサポートしていただきありがとうございます。

以下もご興味があるかもしれません:
  • SQLの行から列、列から行へのシンプルな実装
  • SQL 行から列、列から行へのコードの説明
  • mssqlデータベースで行を列に、列を行に変換するための究極のソリューション
  • SQL 行から列へ、列から行へ

<<:  JavaScript タイピングゲーム

>>:  Linux 占有ポートの強制解放と Linux ファイアウォールのポート開放方法の詳しい説明

推薦する

MySQLでよく使われる文字列関数トップ10の詳細な説明

こんにちは、みんな!技術の話ばかりで髪は切らないトニーです。データベース関数は、何らかの機能を持ち、...

Msyql トランザクション分離について知っておくべきこと

トランザクションとは何ですか?トランザクションは、データベース管理システムの実行プロセスにおける論理...

WeChatアプレットがフォーム検証を実装

WeChatアプレットフォームの検証、参考までに具体的な内容は次のとおりです。プラグインWxVali...

MySQLデータベースの基礎知識と操作のまとめ

この記事では、例を使用して、MySQL データベースの基本的な知識と操作について説明します。ご参考ま...

ServerSocketのデフォルトIPバインディングの実装プロセスの詳細な説明

開発中にサーバーを起動する必要がある場合、ローカルテストではポートを直接書き込み、実際の環境ではバイ...

Ubuntu 向け VMware Tools のインストールと構成のチュートリアル

以前、ブロガーは VMware 仮想マシンに Ubuntu システムをインストールしました。まだイン...

複数の値を返す MySQL ストアド プロシージャ メソッドの例

この記事では、例を使用して、MySQL ストアド プロシージャで複数の値を返す方法について説明します...

MySQLからMariaDBへのスムーズな移行のための詳細な手順

1. MariaDB と MySQL の紹介1. MariaDB の紹介MariaDB は、MySQ...

MySQLが数十億のトラフィックをサポートする方法

目次1 マスター・スレーブの読み取り・書き込み分離1.1 コア2 マスタースレーブレプリケーション2...

フォント宝庫 50 種類の素晴らしい無料英語フォントリソース パート 2

デザイナーは独自のフォント ライブラリを持っているため、プロジェクトの設計時にすぐに使用できます。今...

ブロックレベル要素、インライン要素、可変要素の概要

ブロック要素p - 段落テキストの事前フォーマットテーブルol - ソートフォームul - 順序なし...

ふるい抽選を実施するミニプログラム

この記事の例では、ふるい抽選を実装するためのミニプログラムの具体的なコードを参考までに共有しています...

Reactを使用して画像認識アプリを実装する方法

まずは効果の写真をお見せしましょう。 個人的には効果は問題ないと思います。アプリが写真を学習する時間...

MySQL マルチバージョン同時実行制御メカニズム (MVCC) ソースコードの詳細な説明

目次1. はじめに2. MVCC (マルチバージョン同時実行制御メカニズム) 2.1 繰り返し読み取...

CSSは、閉じることができるマスクレイヤーを備えたポップアップウィンドウ効果を実装します。

実際の開発ではポップアップウィンドウがよく使われます。CSS3を勉強していたときに、閉じることができ...