반응형
해당 값으로 연결된 키 선택
키와 값 같은 두 개의 열이 있습니다.사진과 같이 값 간의 연결에 대한 그룹 키가 필요합니다.동일한 값이 키를 연결합니다.어떻게 하는지 전혀 모르겠어요.10.5.8-MariaDB 사용.
이것은 전형적인 그래프 워킹 문제이며, 마리아DB 10.2.2부터 사용할 수 있는 재귀 쿼리가 필요합니다.
다음은 연결된 노드의 튜플로 에지를 구축하는 것으로 시작하여 이미 방문한 노드를 추적하여 데이터 세트를 반복적으로 탐색하는 접근 방식입니다.방문한 최소 노드를 추적하여 각 노드가 속한 그룹을 식별할 수 있습니다.
with recursive
edges as (
select t1.lagr_number as lagr_number1, t2.lagr_number as lagr_number2
from mytable t1
inner join mytable t2 on t2.ltran_number = t1.ltran_number
),
cte as (
select lagr_number1, lagr_number2, concat(lagr_number1, ',', lagr_number2) as visited
from edges
union all
select c.lagr_number1, e.lagr_number2, concat(c.visited, ',', e.lagr_number2)
from cte c
inner join edges e on e.lagr_number1 = c.lagr_number2
where not find_in_set(e.lagr_number2, c.visited)
)
select lagr_number1 as lagr_number, dense_rank() over(order by min(lagr_number2)) as grp
from cte
group by lagr_number1
order by grp, lagr_number1
표본 데이터:
lag_number | ltran_number:---------- | :-----------K000001 | V000001K000001 | V000004K000001 | V000005K000002 | V000001K000003 | V000002K000003 | V000003K000004 | V000005K000005 | V000007K000005 | V000008K000006 | V000009K000007 | V000009
결과:
lag_number | grp:---------- | --:K000001 | 1K000002 | 1K000004 | 1K000003 | 2K000005 | 3K000006 | 4K000007 | 4
언급URL : https://stackoverflow.com/questions/65097582/select-keys-connected-by-its-values
반응형
'programing' 카테고리의 다른 글
기본 Git 분기를 가져오는 방법? (0) | 2023.07.11 |
---|---|
도짓 태그도 밀립니까? (0) | 2023.07.11 |
VBA 웹 서버에서 UTF-8 CSV 파일 가져오기 (0) | 2023.07.11 |
Firebase Firestore의 수집 스냅샷 항목 매핑 (0) | 2023.07.11 |
잘못된 정방향 참조 또는 컴파일되지 않은 형식에 대한 참조 (0) | 2023.07.11 |