집 >데이터 베이스 >MySQL 튜토리얼 >MySQL 열을 행으로 변환하고 필드(그림 및 텍스트)를 병합하는 방법에 대한 자세한 설명
아래 편집기에서는 열을 행으로 변환하고 필드를 병합하는 mysql 방법에 대한 기사를 제공합니다(필독). 에디터가 꽤 좋다고 생각해서 지금 공유해서 참고용으로 올려보겠습니다.
데이터 테이블:
컬럼 전환: max 사용 (그때의 경우)
max---aggregation함수최대값을 취하는
('경우의 과정' 중국어' 다음 점수 else 0 끝) ---판단
언어로---별칭을 열 이름으로
SELECT `name`, MAX( CASE WHEN course='语文' THEN score END ) AS 语文, MAX( CASE WHEN course='数学' THEN score END ) AS 数学, MAX( CASE WHEN course='英语' THEN score END ) AS 英语 FROM student GROUP BY `name` ;
병합 필드 표시: group_cancat(course,":","score")
SELECT `name`, GROUP_CONCAT(course, ":", score) AS 成绩 FROM student GROUP BY `name`;
group_concat()를 사용하면 설명서에 다음과 같이 명시되어 있습니다. 이 함수는 다음과 같은 연결이 있는 비를 반환합니다. NULL 값의 그룹 String 결과입니다.
비교적 추상적이고 이해하기 어렵습니다.
간단하게 이해하면 실제로는 다음과 같습니다. group_concat()은 어떤 행이 동일한 그룹에 속하는지 계산하고 동일한 그룹에 속하는 열을 표시합니다. 반환할 열은 함수
매개변수(즉, 필드 이름)에 의해 결정됩니다. 그룹화 기준이 있어야 합니다. 즉, 그룹화 기준으로 지정한 컬럼을 기준으로 그룹화하는 것입니다.
group_concat 함수는 내부적으로 group by 문을 실행해야 할 것 같습니다.
1. 테스트 문:
SELECT GROUP_CONCAT(`name`) FROM student GROUP BY `name`;
결과는 이름의 값이 동일한지 찾는 것입니다. 모두 쉼표로 구분하여 다음과 같이 나열합니다.
group_concat('name')
2 .테스트:
SELECT GROUP_CONCAT(`name`) FROM student ;
결과:
group_concat('name')
위의 내용은 group_concat이 group과 함께 사용될 때만 효과가 있음을 문으로 증명할 수 있습니까? 다음은 실제 테스트입니다
3. TestConstantgroup_concat()에 대한 구성 영향:
SET @@GROUP_CONCAT_MAX_LEN=4
설명서에는 설정 구문이 다음과 같다고 나와 있습니다.
SET [SESSION | GLOBAL] group_concat_max_len = val;
둘의 차이점은 무엇인가요?
SET @@global.GROUP_CONCAT_MAX_LEN=4; global可以省略,那么就变成了:SET @@GROUP_CONCAT_MAX_LEN=4;
4.
SELECT GROUP_CONCAT(`name`) FROM student;
문을 사용합니다.
group_concat('name')
결론: group_concat() 함수는 group by 문과 함께 사용해야 합니다. 필요한 효과.
이유는 다음과 같이 이해할 수 있습니다. group_concat()은 그룹 x에 속하는 모든 구성원을 가져옵니다(함수의 열 매개변수는 표시해야 하는 필드를 지정합니다). 그룹 x는 어디에서 왔습니까?
지정된 그룹이 없으면 group_concat()이 어떤 그룹에 따라 멤버를 표시할지 알 수 없습니다. 따라서 위와 같은 그룹 별 조항이 없는 경우에는 Liu Bei, Guan Yu, Zhang Fei, Liu Bei, Guan Yu, Zhang Fei, Liu Bei, Guan Yu, Zhang Fei가 표시됩니다.
이 기능은 실제로 언제 필요한가요?
쿼리하면 결과는 다음과 같습니다. 왼쪽에 그룹 이름이 표시되고, 그룹의 모든 구성원 정보가 표시됩니다. 오른쪽에 표시됩니다. 이 기능을 사용하면 많은 것을 저장할 수 있습니다.
그리고 이렇게 사용하면
SELECT `name`, GROUP_CONCAT(course, ":", score) AS 成绩 FROM student ;
별로 의미가 없습니다.
group_concat() 열을 지정하는 것이 가장 좋은 경우입니다. 여러 열이 지정된 경우.
SELECT `name`, GROUP_CONCAT(course, ":", score) AS 成绩 FROM student GROUP BY `name`;
그러면 표시되는 결과는 다음과 유사합니다.
group_concat(course,":",score)
위 내용은 MySQL 열을 행으로 변환하고 필드(그림 및 텍스트)를 병합하는 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!