私はMariaDBの標準テーブルにデータを格納していますが、関連するテーブルのレコードをJSON文字列として返したいと思います。私はするつもり何複数のCOLUMN_JSON結果をJSON配列として返します
は、私がexerciseId
に渡すことができます機能を持っており、機能はストアドプロシージャによって返される各exercise
レコードは、子テーブルからのネストされたデータを含めることができることを意味し、すべての関連exerciseMuscle
レコードのJSON文字列を返します。
COLUMN_JSON
とCOLUMN_CREATE
を使用してJSONレコードを作成することはできましたが、これを必要とするJSON値の配列ではなく、個々のレコードのセットとして返すことしかできません。私が使用しているSQLは次のとおりです。
select
e.id,
CONVERT(COLUMN_JSON(COLUMN_CREATE(
'role', em.muscleRoleName,
'muscle', em.muscleName
)) USING utf8) as musclesJson
from
exercise e
inner join exerciseMuscle em
on e.id = em.exerciseId
where
e.id = 96;
これが返されます。
| id | musclesJson
| 96 | {"role":"main","muscle":"biceps"}
| 96 | {"role":"secondary","muscle":"shoulders"}
を私がしたいことはあるとき:
| id | musclesJson
| 96 | [{"role":"main","muscle":"biceps"},{"role":"secondary","muscle":"shoulders"}]
はなくても、1行に複数の結果を返すために、それは可能です結果を反復して手動で構築するには? SQLにgroup by
を追加すると、JSONには最初のレコードのみが含まれます。
あなたが使用しているMySQLのバージョン? – Dez
MariaDB 10.0.24、変更されたタグ – CrazyHorse