>  기사  >  데이터 베이스  >  MySQL의 JSON 필드에 저장된 데이터를 기반으로 테이블을 조인할 수 있습니까?

MySQL의 JSON 필드에 저장된 데이터를 기반으로 테이블을 조인할 수 있습니까?

Barbara Streisand
Barbara Streisand원래의
2024-10-31 07:54:02390검색

Can You Join Tables Based on Data Stored in JSON Fields in MySQL?

MySQL의 JSON 필드에서 조인 수행

질문:

ID 목록을 저장하는 JSON 필드입니다. 이 필드에서 SQL 작업을 수행하고 이를 사용하여 다른 필드와 조인할 수 있습니까? 테이블?

예:

다음 테이블을 고려하십시오.

<code class="sql">CREATE TABLE user (
    user_id INT,
    user_name VARCHAR(50),
    user_groups JSON
);

CREATE TABLE user_group (
    user_group_id INT,
    group_name VARCHAR(50)
);</code>

다음 결과를 반환하는 쿼리를 생성하려고 합니다.

user_id | user_name | user_group_id | group_name|
-------------------------------------------------
101     | John      | 1             | Group A
101     | John      | 3             | Group C

user_groups가 그룹을 나타내는 목록 [1, 3]을 저장하는 위치 ID.

답변:

예, MySQL의 JSON 필드에서 조인을 수행할 수 있습니다. JSON_CONTAINS 함수를 사용하면 JSON 값에 특정 값이 포함되어 있는지 확인할 수 있습니다.

<code class="sql">SELECT 
       u.user_id, 
       u.user_name, 
       g.user_group_id,
       g.group_name
   FROM user u
   LEFT JOIN user_group g 
       ON JSON_CONTAINS(u.user_groups, CAST(g.user_group_id as JSON), '$')</code>

이 쿼리에서 JSON_CONTAINS는 user_groups 필드에 user_group_id 값이 포함되어 있는지 확인합니다. 그렇다면 결과 집합에 해당 행이 포함됩니다. 이 함수의 $ 연산자는 지정된 값을 배열의 어느 곳에서나 검색해야 함을 나타냅니다.

이 기술을 사용하면 JSON 필드에서 조인을 수행하고 중첩 구조에서 관련 데이터를 추출할 수 있습니다.

위 내용은 MySQL의 JSON 필드에 저장된 데이터를 기반으로 테이블을 조인할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.