반응형
MariaDB/MySQL 선택 쿼리 ID의 json 배열을 연결된 값으로 바꿉니다.
데이터베이스 쿼리에 익숙하지 않지만 다음과 같은 태그 ID 열을 테이블에 저장했습니다.[1,6,8]
그리고 나는 돌아오고 싶다"Music, Dance, Pop"
예를 들어, 제가 선택한 쿼리에서요.
데이터베이스 스키마를 설계하지 않았으며 수정할 수 없습니다.
이렇게 하고 싶은 이유는 이 쿼리의 응답이 클라이언트에 직접 전송되어 테이블 렌더링이 이루어지기 때문입니다.또, 현재의 ORM 취득(PHP Laravel)에서는, 행 마다 같은 관련 모델을 취득하는데 오랜 시간이 걸립니다.그래서 이런 문의가 가능한지 알고 싶습니다.
스키마는 다음과 같습니다.
투고
id | name | ... | tag_ids (JSON array) | ...
태그
id | name
사용할까 생각 중입니다.JSON_REPLACE
그러나 이 문제에 어떻게 접근해야 할지 전혀 알지 못합니다.결과를 후처리하는 코드가 없는 일반 SQL에서도 이것이 가능합니까?
수정할 수 없습니다.
이상적으로는 데이터를 정규화하는 것이 좋습니다.그러면 이 문제를 쉽게 처리할 수고를 덜 수고를 덜 수 있습니다.즉, JSON 함수의 도움을 받아 집약을 조합하여 결합을 시도할 수 있습니다.
SELECT
p.id,
p.name,
GROUP_CONCAT(t.name) AS tag_names
FROM posts p
LEFT JOIN tags t
ON JSON_SEARCH(p.tag_ids, 'one', t.id) IS NOT NULL
GROUP BY
p.id,
p.name;
데모
언급URL : https://stackoverflow.com/questions/57519025/mariadb-mysql-select-query-replace-json-array-of-ids-into-concatenated-values
반응형
'source' 카테고리의 다른 글
href 식의 역할은 무엇입니까? (0) | 2022.11.05 |
---|---|
변수 $this는 PHP에서 무엇을 의미합니까? (0) | 2022.11.05 |
MySQL ENUM 유형 vs 조인 테이블 (0) | 2022.11.04 |
jQuery는 같은 클래스의 요소를 루프합니다. (0) | 2022.11.04 |
날짜 PHP에서 주 번호(년)를 가져옵니다. (0) | 2022.11.04 |