JSON_OBJECT 값으로 mysql 결과 주문
MariaDB 10.2와 다음 SQL이 있습니다.
SELECT products.*,
CONCAT('[', GROUP_CONCAT(JSON_OBJECT(
'id', V.id,
'price', V.price
) ORDER BY V.price ASC), ']') AS variants,
FROM products
LEFT JOIN products_variants V ON V.products_id = products.id
GROUP BY products.id
LIMIT 0,10
결과는 다음과 같습니다.
Array (
[0] => Array (
[id] => 1,
[variants] => [{"id": 1, "price": 100},{"id": 2, "price": 110}]
)
[1] => Array (
[id] => 2,
[variants] => [{"id": 3, "price": 200},{"id": 4, "price": 210}]
)
)
각 제품의 첫 번째 변형 가격에 따라 제품을 분류해야 합니다.
- 첫 번째 변형 가격이 100이므로 제품 ID 1이 첫 번째여야 합니다.
- 상품 ID 2는 첫번째 변형 가격이 200이고 200 > 100이므로 두번째여야 합니다.
시도:
ORDER BY JSON_EXTRACT(`variants`, '$[0].price)
오류가 발생합니다.
Reference 'variants' not supported (reference to group function)
당신이 원하는 것은:
order by min(v.price)
JSON 개체를 구문 분석할 필요가 없습니다.
열을 숨겨서는 안 될 때의 예입니다 (price
(이 경우 JSON에서) 열 안에 있습니다.대신, 계속.price
MySQL이 (필요에 따라) 정렬 또는 필터링을 위해 쉽게 액세스할 수 있도록 자체 열로 지정합니다.
또한 컬럼을 내부에 유지하는 것도 좋습니다.JSON
JSON이 "complete"가 되도록 문자열을 지정합니다.
문제는 당신이 주변에 틀린 인용문을 가지고 있었다는 것입니다.variant
. 백틱스(사용한 백틱스)는 열 및 테이블 이름에 사용됩니다.아포스트로피나 인용구가 필요했습니다.'
아니면"
) 때문에variant
이 컨텍스트에서는 문자열일 뿐입니다.)
언급URL : https://stackoverflow.com/questions/53168942/order-mysql-result-by-value-from-json-object
'programing' 카테고리의 다른 글
LOAD DATA LOCAL INFILE을 실행하는 Powershell에서 오류 발생 (0) | 2023.09.21 |
---|---|
Google Chrome 북마크 기능 (0) | 2023.09.21 |
CSS selector - 주어진 자식이 있는 요소 (0) | 2023.09.21 |
Oracle에서의 재귀 (0) | 2023.09.21 |
WP REST API를 사용하여 사용자 지정 게시 유형에서 데이터를 가져오려면 어떻게 해야 합니까? (0) | 2023.09.21 |