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 8.0 で列を素早く追加する方法

序文: MySQL 8.0 では高速な列追加がサポートされ、数秒で大きなテーブルにフィールドを追加で...

MySQL 5.7.13 のインストールと設定方法のグラフィック チュートリアル (win10 64 ビット)

この記事では、参考までにMySQL 5.7.13 winx64のインストールと設定方法のグラフィック...

Linux で Oracle データベースをバックアップするためのスケジュールされたタスクの設定に関するチュートリアル

1. データベースの文字セットを確認するデータベースの文字セットは、Linux で設定された環境変数...

ウェブページ上でデスクトップ exe プログラムを呼び出す簡単な方法

この記事では主に、Web ページ上でデスクトップ exe プログラムを呼び出す方法を紹介します。 W...

MySql で、存在しない場合は挿入し、存在する場合は更新する方法

まとめシナリオによっては、レコードがない場合は挿入し、レコードがある場合は更新するという要件がある場...

Docker プルタイムアウトの解決策

最近、Docker イメージのプルが非常に不安定です。遅く、タイムアウトすることがよくあります。 x...

Centos7 で ZooKeeper3.4 ミドルウェアを構築するための一般的なコマンドの概要

1.ダウンロードして解凍する1. Zookeeperの紹介分散サービス フレームワークとして、Zoo...

Vueはズームイン、ズームアウト、ドラッグ機能を実装しています

この記事では、参考までに、ズームインとズームアウトのドラッグ機能を実現するためのVueの具体的なコー...

高度な JavaScript フロントエンド開発でよく使用されるいくつかの API の例の詳細な説明

目次ミューテーションオブザーバーAPI特徴インターセクションオブザーバーAPI例えば画像の遅延読み込...

vue3 watch と watchEffect の使い方と違い

1.リスナーを見る時計のご紹介 'vue' から { ref, reactive, ...

JavaScript配列をツリー構造に変換する方法

1. 需要バックエンドは、フロントエンドがツリー構造(重複データなし)に変換するためのデータを提供し...

CocosCreator ユニバーサルフレームワークデザインネットワーク

目次序文Websocketの使用Websocketオブジェクトの構築Websocket ステータスW...

Tomcatc3p0 で jnid データ ソースを構成する 2 つの実装方法の分析

c3p0の使用c3p0jarパッケージをインポートする <!-- https://mvnrep...

JS クロスドメイン XML - AS URLLoader を使用

最近、機能拡張の要件を受け取りました。ただし、新しい要件で参照されているデータインターフェイスは、X...

CSS で QR コードスキャンボックスを実装するためのサンプルコード

カメラを開くと通常はスキャンボックスが表示されますが、静的なQRコードではフォーカスを合わせたりスキ...