Mysql クエリの結果セットを JSON データに変換するサンプル コード

Mysql クエリの結果セットを JSON データに変換するサンプル コード

Mysql はクエリ結果セットを JSON データに変換します 序文 学生テーブル 学生スコアテーブル 1 人の学生の各科目のスコアをクエリします (オブジェクト JSON 文字列に変換し、カンマで連結します) 1 人の学生の各科目のスコアを配列 JSON 文字列に変換します 配列文字列を値として使用し、キーを設定します 2 つのテーブルの結合クエリ (最終 SQL、各学生の各科目のスコア) 最終結果

序文

多くの場合、関連するテーブルのペア、1 対多の関係、SQL ステートメントを使用して 2 つのテーブルのすべてのレコードを照会するなどの要件があります。たとえば、学生テーブル、学生のスコア テーブルの場合、SQL ステートメントを使用して各科目の各学生のスコアを照会します。

学生テーブル

存在しない場合はテーブルを作成します `student`(
 `id` INT UNSIGNED AUTO_INCREMENT、
 `name` VARCHAR(100) NOT NULL
 主キー ( `id` )
)ENGINE=InnoDB デフォルト文字セット=utf8;
学生にINSERT INTO( id, name ) VALUES ( 1, '张三' );
学生に挿入(ID、名前)VALUES(2、'Li Si');

学生成績証明書

存在しない場合はテーブルを作成 `score`(
 `id` INT UNSIGNED AUTO_INCREMENT、
 `name` VARCHAR(100) NOT NULL
 `student_id` INT(100) NOT NULL,
 `スコア` VARCHAR(100) NOT NULL
 主キー ( `id` )
)ENGINE=InnoDB デフォルト文字セット=utf8;
スコアに INSERT INTO します( id, name, student_id, score) VALUES ( 1, '数学', 1, '95.5' );
スコアにINSERT INTO( id, name, student_id, score) VALUES ( 2, 'Chinese', 1, '99.5' );
スコアにINSERT INTO( id, name, student_id, score) VALUES ( 3, '数学', 2, '95.5' );
スコアにINSERT INTO( id, name, student_id, score) VALUES ( 4, 'Chinese', 2, '88' );

1 人の生徒の各科目のスコアを照会します (オブジェクト JSON 文字列に変換し、カンマで連結します)

GROUP_CONCAT(JSON_OBJECT( を選択) 
'id'、id、'name'、name、'student_id'、student_id、'score'、score)) をスコアとして FROM score に格納します。ここで、student_id は 1 です。
## クエリ結果## {"id": 1, "name": "数学", "student_id": 1, "score": "95.5"},{"id": 2, "name": "中国語", "student_id": 1, "score": "99.5"}

1人の生徒の成績を配列JSON文字列に変換する

SELECT CONCAT('[', GROUP_CONCAT(JSON_OBJECT( 
'id',id,'name',name,'student_id',student_id, 'score', score)), ']') を scores FROM score として指定します。ここで、student_id は 1 です。
## クエリ結果## [{"id": 1, "name": "数学", "student_id": 1, "score": "95.5"},{"id": 2, "name": "中国語", "student_id": 1, "score": "99.5"}]

配列文字列を値として使用し、キーを設定します

SELECT CONCAT('{"scoreData":[', GROUP_CONCAT(JSON_OBJECT( 
'id',id,'name',name,'student_id',student_id, 'score', score)), ']}') を scores FROM score として指定します。ここで、student_id は 1 です。
## クエリ結果## {"scoreData": [{"id": 1, "name": "Mathematics", "student_id": 1, "score": "95.5"},{"id": 2, "name": "Chinese", "student_id": 1, "score": "99.5"}]}

2 つのテーブルの結合クエリ (最終 SQL、各科目の各生徒の成績)

SELECT ID、名前、
(SELECT CONCAT('[', GROUP_CONCAT(JSON_OBJECT( 
'id',id,'name',name,'student_id',student_id, 'score', score)), ']') をスコアとして FROM score WHERE student_id = stu.id) をスコアとして
学生から
## [{"id": 1, "name": "数学", "student_id": 1, "score": "95.5"},{"id": 2, "name": "中国語", "student_id": 1, "score": "99.5"}]

最終結果

ID名前スコア
1張三[{“id”: 1, “name”: “数学”, “student_id”: 1, “score”: “95.5”},{“id”: 2, “name”: “文”, “student_id”: 1, “score”: “99.5”}]
2李思[{“id”: 3, “name”: “数学”, “student_id”: 1, “score”: “95.5”},{“id”: 4, “name”: “中国語”, “student_id”: 1, “score”: “88”}]

これで、MySQL クエリ結果セットを JSON データに変換する方法についての説明は終わりです。MySQL 結果セットを JSON データに変換する方法についてさらに詳しく知りたい場合は、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Mysqlは保存されたJSON文字列内のデータを直接クエリします
  • MySQL json 形式のデータクエリ操作
  • Python クエリ mysql、json インスタンスを返す
  • JSON文字列をMysqlに保存し、条件に従ってクエリを実行する

<<:  Vue でインデックスをキー属性値として使用することが推奨されないのはなぜですか?

>>:  Dockerはプライベートライブラリイメージを完全に削除します

推薦する

mysql 行列変換サンプルコード

1. 需要3 つのテーブルがあります。一定期間にわたるさまざまな抗生物質感受性の結果、つまり rep...

Win10 の組み込み Linux システムを使用して Spring Boot プロジェクトを開始する方法

1. Windows10の組み込みLinuxサブシステムをインストールする1.1. Linuxサブシ...

Nginx でファイル ホットリンク保護サービスを構築する方法を学ぶ例

序文多くのサイトが、ポイントやゴールドコインなど、情報のダウンロードに料金を請求していることは誰もが...

CentOS7 64 ビットでの MySQL 5.7 のインストールと設定のチュートリアル

インストール環境: CentOS7 64ビットMINI版、MySQL5.7をインストール1. YUM...

Nodeはリクエスト追跡にasync_hooksモジュールを使用します

async_hooks モジュールは、Node.js バージョン 8.0.0 に正式に追加された実験...

Tomcat でよく使われるフィルターの詳細な説明

目次1. クロスドメインフィルタ CorsFilter 1.1 設定例1.2 パラメータの説明2. ...

VMware 仮想マシンの 3 つの接続方法の例の分析

NATこのようにして、仮想マシンのネットワーク カードはホストの VMnet8 に接続されます。この...

Windows で削除された MySQL 8.0.17 のルート アカウントとパスワードを回復する方法

少し前にSQLの独学を終え、MySQL 8.0.17をダウンロードしました。インストールして設定した...

ウェブサイトのテキストはまだデザインする必要がありますか?

多くの人が、ウェブサイト上のテキストはデザインする必要があるのか​​と疑問に思うかもしれません。多く...

MySQL の最初のインストールが成功した後にパスワードを初期化する手順

ファイルをディレクトリに解凍しますこれは解凍後のディレクトリですmy.iniファイルを入力しますダブ...

wgetはウェブサイト全体(サブディレクトリ全体)または特定のディレクトリをダウンロードします

wgetコマンドを使用して、親ディレクトリの下のサブディレクトリ全体をダウンロードします。親ディレク...

React Native JSIはRNとネイティブ通信のサンプルコードを実装します

目次JSIとはJSIの違いiOS で JSI を使用するiOS 設定RN側の構成jsはパラメータ付き...

MySQL サーバー 5.7.20 のインストールと設定方法のグラフィック チュートリアル

この記事ではMySQL 5.7.20のインストールと設定方法を記録し、皆さんと共有します1. MyS...

静的ページと動的ページの実行メカニズムの説明

1. 静的ページとは、Web ページ内に HTML タグのみが含まれるページです。WEB 開発者がこ...

MySQLがbinlogファイルを手動で登録し、マスタースレーブ異常を引き起こす理由

1. 問題の原因友人の @水米田 から、POSITION に基づくマスタースレーブについて質問があり...