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 ファイアウォールのポート開放方法の詳しい説明

推薦する

CSS でフロートをクリアするための完全ガイド (要約)

1. 親divは疑似クラスafterとzoomを定義します <スタイル タイプ="...

ベースリンクタグの使用の紹介ベース

<br />リンクをクリックすると、ポップアップ表示される Web ページ アドレスは ...

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

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

CentOS 7.5 に Docker をインストールする詳細なチュートリアル

Docker入門Docker は、アプリケーションをより速く配信するのに役立つオープンソースのコンテ...

UbuntuにProtobuf 3をインストールするための詳細なチュートリアル

いつインストールするかprotoc コマンドを使用しても Protoc が見つからない場合は、インス...

MySQLの文字セットを変更する方法

1. MySQLの文字セットを確認する '%char%' のような変数を表示します。...

シンプルなカレンダー効果を実現する js

この記事では、シンプルなカレンダー効果を実現するためのjsの具体的なコードを参考までに共有します。具...

MySQL 5.7.20 の解凍バージョンをインストールするための詳細な手順 (2 つの方法)

Windows 64ビットでのMySQLのインストールについて説明します。5.7以降、MySQLの...

mysql binlog (バイナリログ) を表示する方法

たとえば、新しいテーブルを作成したり、既存のテーブルのデータを更新したりすると、これらのイベントは、...

Vueは商品詳細ページの虫眼鏡機能を実装します

この記事では、商品詳細ページの虫眼鏡を実装するためのVueの具体的なコードを参考までに共有します。具...

Windows で IP アドレスを指定してサーバーへのリモート アクセスを設定する方法

当社には、外部ネットワークからの干渉を受けることが多いサーバーが多数あります。侵入者はポート 338...

CSS 円形ホローイングの実装(クーポン背景画像)

この記事では主に、クーポンの背景画像などでよく使われる CSS 円形ホローイングについて紹介し、皆さ...

Linux で MySQL 8.0 バージョンをアンインストールする方法

1. MySQLをシャットダウンする [root@localhost /]# サービスmysqldを...

SSH ポート転送、ローカル ポート転送、リモート ポート転送、動的ポート転送の詳細

パート 1 SSH ポート転送の概要カフェで無料Wi-Fiを利用しているとき、誰かがあなたのパスワー...

CSS3 テキストシャドウ text-shadow プロパティの詳細な説明

テキストシャドウ text-shadow プロパティの効果: 1. 右下隅の影、左下隅の影、左上隅の...