쉼표로 구분된 값으로 테이블 조인: 전체 가이드
데이터베이스 테이블의 특정 열에는 쉼표로 구분된 값이 포함되는 경우가 많습니다. 각 값이 해당 행과 연결되어야 하기 때문에 데이터를 쿼리할 때 문제가 발생합니다. 일반적인 시나리오 중 하나는 한 열에 다른 테이블을 참조하는 쉼표로 구분된 값이 포함된 두 테이블을 조인하는 것입니다.
다음 예를 고려하세요.
Notes Table
nid | forDepts |
---|---|
1 | 1,2,4 |
2 | 4,5 |
직위 테이블
id | name |
---|---|
1 | Executive |
2 | Corp Admin |
3 | Sales |
4 | Art |
5 | Marketing |
Notes 테이블의 'forDepts' 열을 Positions 테이블의 해당 부서 이름과 연결하는 것이 목표입니다. 원하는 출력은 다음과 같습니다.
nid | DepartmentName |
---|---|
1 | Executive, Corp Admin, Art |
2 | Art, Marketing |
데이터베이스 구조를 변경하지 않고도 SQL 함수 조합을 사용하여 이를 달성할 수 있습니다.
FIND_IN_SET 및 GROUP_CONCAT 사용
FIND_IN_SET 및 GROUP_CONCAT 함수 조합을 사용하여 추출할 수 있습니다. 그리고 각 'forDepts' 값에 대한 부서 이름을 집계합니다:
SELECT a.nid, GROUP_CONCAT(b.name ORDER BY b.id) DepartmentName FROM Notes a INNER JOIN Positions b ON FIND_IN_SET(b.id, a.forDepts) > 0 GROUP BY a.nid
작동 방식
Result
쿼리의 출력은 원하는 테이블이 됩니다. 'nid' 열이 쉼표로 구분된 해당 'DepartmentName'과 결합됨
결론
FIND_IN_SET 및 GROUP_CONCAT 함수를 활용하면 쉼표로 구분된 값으로 두 테이블을 효과적으로 조인하여 테이블 전체에서 데이터를 추출하고 집계할 수 있습니다. , 데이터베이스 구조가 정규화되지 않은 경우에도 마찬가지입니다. 이 기술은 Excel과 같은 다른 애플리케이션으로 데이터를 내보낼 때 특히 유용합니다.
위 내용은 SQL을 사용하여 쉼표로 구분된 값으로 테이블을 조인하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!