반응형
여러 COLUMN_JSON 결과를 JSON 어레이로 반환
MariaDB의 표준 테이블에 데이터를 저장하고 있습니다만, 관련 테이블의 레코드를 JSON 문자열로 반환하고 싶습니다.
제가 하려고 하는 것은 제가 그 안에 들어갈 수 있는 기능을 가지고 있는 것입니다.exerciseId
함수는 관련된 모든 JSON 문자열을 반환합니다.exerciseMuscle
레코드, 즉 각 레코드exercise
저장된 proc가 반환하는 레코드에는 하위 테이블에서 중첩된 데이터도 포함될 수 있습니다.
JSON 레코드를 생성할 수 있었습니다.COLUMN_JSON
그리고.COLUMN_CREATE
그러나 필요에 따라 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"}]
결과를 반복하지 않고 한 행에 여러 결과를 반환하고 수동으로 작성할 수 있습니까?를 추가하면group by
그러면 JSON은 첫 번째 레코드만 포함합니다.
알고 보니GROUP_CONCAT
쉼표를 구분 기호로 지정합니다.SQL을 다음과 같이 변경합니다.
select
e.id,
CONVERT(
GROUP_CONCAT(
COLUMN_JSON(
COLUMN_CREATE(
'role', em.muscleRoleName,
'muscle', em.muscleName
)
)
SEPARATOR ','
) USING utf8) as muscles
from
exercise e
inner join exerciseMuscle em
on e.id = em.exerciseId
where
e.id = 96;
반품:
| id | musclesJson
| 96 | {"role":"main","muscle":"biceps"},{"role":"secondary","muscle":"shoulders"}
언급URL : https://stackoverflow.com/questions/39943309/return-multiple-column-json-results-as-json-array
반응형
'programing' 카테고리의 다른 글
matplotlib를 사용하여 범례 크기를 변경하는 방법벽면 (0) | 2022.10.02 |
---|---|
Python 문자열의 u'\uff' (0) | 2022.10.02 |
~x + ~y == ~(x + y)는 항상 거짓입니까? (0) | 2022.10.02 |
쿠키와 세션은 무엇이며 서로 어떤 관계가 있습니까? (0) | 2022.10.02 |
PHP에서 세션 시간 초과를 변경하는 방법 (0) | 2022.10.02 |