mysql json 열에서 검색하여 동일한 배열 인덱스에서 여러 기준을 확인하십시오.

군잘 레이

MYSql서버 8.0.17을 사용하고 있습니다.

uId = 'UR000001'보안 열 (표에 표시됨)에서 VIEW = 'Y'레코드를 얻고 싶습니다 .

Viewid          Security
VW0000000002    {"security": [{"uId": "UR000001", "edit": "N", "view": "Y"}, {"uId": "UR000002", "edit": "N", "view": "Y"}]}
VW0000000013    {"security": [{"uId": "UR000001", "edit": "N", "view": "N"}, {"uId": "UR000002", "edit": "N", "view": "Y"}]}
VW0000000014    {"security": [{"uId": "UR000001", "edit": "N", "view": "Y"}, {"uId": "UR000002", "edit": "N", "view": "Y"}]}

JSON_SEARCH 함수는 내가 원하지 않는 레코드의 모든 배열 요소를 검색합니다.

다음은 내가 시도한 쿼리이지만 모든 일치하는 결과를 반환합니다 ( uID='UR000001' OR View='Y' )

SELECT viewid, 
       Json_search(`security`, 'one', 'UR000001', NULL, '$.security[*].uId'), 
       Json_search(`security`, 'one', 'Y', NULL, '$.security[*].view') 
FROM   vw_viewmaster 
WHERE  Json_search(`security`, 'one', 'UR000001', NULL, '$.security[*].uId') 
       AND Json_search(`security`, 'one', 'Y', NULL, '$.security[*].view');

실제 결과 :( uID='UR000001' OR View='Y' )

VW0000000002    "$.security[0].uId" "$.security[0].view"
VW0000000013    "$.security[0].uId" "$.security[1].view"
VW0000000014    "$.security[0].uId" "$.security[0].view"

예상 결과 :( uID='UR000001' AND View='Y' )

VW0000000002    "$.security[0].uId" "$.security[0].view"
VW0000000014    "$.security[0].uId" "$.security[0].view"
GMB

MySQL 8.0에서는 편리한 JSON 함수json_table()사용 하여 json 배열을 행으로 변환 할 수 있습니다 . 그런 다음 결과 집합을 검색 할 수 있습니다.

다음 쿼리는 당신에게 모든주는 viewid그의 적어도 하나의 배열 요소 속성의 uId동일 'UR000001'및 속성 view입니다 'Y':

select v.viewid
from vw_viewmaster v
where exists (
    select 1
    from json_table(
        v.security -> '$.security',
        '$[*]'
        columns(
            uid  varchar(50) path '$.uId',
            edit varchar(1)  path '$.edit',
            view varchar(1)  path '$.view'
        )
    ) x
    where x.uid = 'UR000001' and x.view = 'Y'
);

데이터 세트의 경우 다음을 생성합니다 .

| viewid       |
| ------------ |
| VW0000000002 |
| VW0000000014 |

일치하는 배열 객체의 세부 정보를 원하면 다음을 수행하십시오.

select v.viewid, x.*
from vw_viewmaster v
cross join json_table(
    v.security -> '$.security',
    '$[*]'
    columns(
        rowid for ordinality,
        uid   varchar(50) path '$.uId',
        edit  varchar(1)  path '$.edit',
        view  varchar(1)  path '$.view'
    )
) x
where x.uid = 'UR000001' and x.view = 'Y'

보너스로 rowidJSON 배열에서 일치하는 개체의 인덱스를 제공합니다 (첫 번째 개체에는 인덱스 1이 있음).

결과 :

| viewid       | rowid | uid      | edit | view |
| ------------ | ----- | -------- | ---- | ---- |
| VW0000000002 | 1     | UR000001 | N    | Y    |
| VW0000000014 | 1     | UR000001 | N    | Y    |

그러나 조건을 충족하는 배열의 개체가 둘 이상인 경우 위 쿼리는 원래 테이블의 행당 둘 이상의 행을 생성합니다 (이것이 내가 exists첫 번째 쿼리에서 사용한 이유입니다 ).

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

배열에서 동일한 요소의 인덱스를 여러 번 찾기

분류에서Dev

Postgres에서 json 배열을 사용하여 동일한 테이블에 여러 선택적 조인 만들기

분류에서Dev

어떻게 PHP에서 한 번에 여러 값을 기준으로 다차원 배열을 검색하려면?

분류에서Dev

Snowflake에서 SQL을 사용하여 JSON 배열의 인덱스 가져 오기

분류에서Dev

여러 열에서 인덱스 일치

분류에서Dev

파이썬에서 여러 인덱스를 사용하여 동시에 numpy 배열을 채우는 방법

분류에서Dev

stdClass 하위 배열을 사용하여 JSON 배열에서 값 검색

분류에서Dev

한 단계에서 인덱스 배열을 사용하여 하위 배열 가져 오기

분류에서Dev

여러 인스턴스에서 일부 속성 값을 확인하고 Python의 동일한 인스턴스에서 다른 속성을 인쇄하십시오.

분류에서Dev

동일한 열에서 모든 확인란을 선택하십시오.

분류에서Dev

한 검색에서 동일한 열의 여러 SQL 결과 열을 표시하는 방법

분류에서Dev

여러 Okular 인스턴스에서 동일한 파일을 열지 마십시오.

분류에서Dev

동일한 행에서 검색된 값을 삭제하여 배열의 팬더 열을 변환하는 방법

분류에서Dev

한 셀에서 여러 값을 검색하는 문자열

분류에서Dev

동일한 인덱스에서 여러 목록의 문자열을 연결하는 방법

분류에서Dev

동일한 인덱스에서 여러 목록의 문자열을 연결하는 방법

분류에서Dev

여러 파일에서 여러 문자열을 검색하는 방법

분류에서Dev

배열의 인덱스 인덱스가 다른 동일한 이름을 가진 여러 요소에서 클릭 된 요소를 얻는 방법

분류에서Dev

자바 스크립트에서 json 배열을 사용하여 검색 필터

분류에서Dev

MySQL은`like` 또는 regexp를 사용하여 JSON 배열에서 값을 검색합니다.

분류에서Dev

postgresql에서 타임 스탬프 열을 인덱싱하여 더 빠른 검색?

분류에서Dev

Swiftyjson을 사용하여 색인화 된 객체 배열 iOS에서 json에서 제목 검색

분류에서Dev

배열 열에서 여러 문자열을 검색하는 방법

분류에서Dev

1-6 행에서 6-12 등의 파일을 읽고 한 열을 비교하여 동일한 버전이 있는지 확인하십시오.

분류에서Dev

Android : 동일한 파일에서 여러 JSON 객체 배열을 반복하는 방법

분류에서Dev

MYSQL 동일한 테이블에서 여러 열 조인

분류에서Dev

행렬 / 배열의 인덱스를 확인한 다음 일부 조건을 확인하십시오.

분류에서Dev

일부 값이 선택 사항 인 배열에서 여러 값을 검색하는 방법

분류에서Dev

여러 열을 검색하기위한 SpringData 메서드 이름

Related 관련 기사

  1. 1

    배열에서 동일한 요소의 인덱스를 여러 번 찾기

  2. 2

    Postgres에서 json 배열을 사용하여 동일한 테이블에 여러 선택적 조인 만들기

  3. 3

    어떻게 PHP에서 한 번에 여러 값을 기준으로 다차원 배열을 검색하려면?

  4. 4

    Snowflake에서 SQL을 사용하여 JSON 배열의 인덱스 가져 오기

  5. 5

    여러 열에서 인덱스 일치

  6. 6

    파이썬에서 여러 인덱스를 사용하여 동시에 numpy 배열을 채우는 방법

  7. 7

    stdClass 하위 배열을 사용하여 JSON 배열에서 값 검색

  8. 8

    한 단계에서 인덱스 배열을 사용하여 하위 배열 가져 오기

  9. 9

    여러 인스턴스에서 일부 속성 값을 확인하고 Python의 동일한 인스턴스에서 다른 속성을 인쇄하십시오.

  10. 10

    동일한 열에서 모든 확인란을 선택하십시오.

  11. 11

    한 검색에서 동일한 열의 여러 SQL 결과 열을 표시하는 방법

  12. 12

    여러 Okular 인스턴스에서 동일한 파일을 열지 마십시오.

  13. 13

    동일한 행에서 검색된 값을 삭제하여 배열의 팬더 열을 변환하는 방법

  14. 14

    한 셀에서 여러 값을 검색하는 문자열

  15. 15

    동일한 인덱스에서 여러 목록의 문자열을 연결하는 방법

  16. 16

    동일한 인덱스에서 여러 목록의 문자열을 연결하는 방법

  17. 17

    여러 파일에서 여러 문자열을 검색하는 방법

  18. 18

    배열의 인덱스 인덱스가 다른 동일한 이름을 가진 여러 요소에서 클릭 된 요소를 얻는 방법

  19. 19

    자바 스크립트에서 json 배열을 사용하여 검색 필터

  20. 20

    MySQL은`like` 또는 regexp를 사용하여 JSON 배열에서 값을 검색합니다.

  21. 21

    postgresql에서 타임 스탬프 열을 인덱싱하여 더 빠른 검색?

  22. 22

    Swiftyjson을 사용하여 색인화 된 객체 배열 iOS에서 json에서 제목 검색

  23. 23

    배열 열에서 여러 문자열을 검색하는 방법

  24. 24

    1-6 행에서 6-12 등의 파일을 읽고 한 열을 비교하여 동일한 버전이 있는지 확인하십시오.

  25. 25

    Android : 동일한 파일에서 여러 JSON 객체 배열을 반복하는 방법

  26. 26

    MYSQL 동일한 테이블에서 여러 열 조인

  27. 27

    행렬 / 배열의 인덱스를 확인한 다음 일부 조건을 확인하십시오.

  28. 28

    일부 값이 선택 사항 인 배열에서 여러 값을 검색하는 방법

  29. 29

    여러 열을 검색하기위한 SpringData 메서드 이름

뜨겁다태그

보관