>  기사  >  데이터 베이스  >  MySQL 열을 행으로 변환하고 필드(그림 및 텍스트)를 병합하는 방법에 대한 자세한 설명

MySQL 열을 행으로 변환하고 필드(그림 및 텍스트)를 병합하는 방법에 대한 자세한 설명

黄舟
黄舟원래의
2017-03-25 13:26:221336검색

아래 편집기에서는 열을 행으로 변환하고 필드를 병합하는 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`
;

MySQL 열을 행으로 변환하고 필드(그림 및 텍스트)를 병합하는 방법에 대한 자세한 설명

병합 필드 표시: group_cancat(course,":","score")

SELECT
 `name`,
 GROUP_CONCAT(course, ":", score) AS 成绩
FROM
 student
GROUP BY
 `name`;

MySQL 열을 행으로 변환하고 필드(그림 및 텍스트)를 병합하는 방법에 대한 자세한 설명

group_concat()를 사용하면 설명서에 다음과 같이 명시되어 있습니다. 이 함수는 다음과 같은 연결이 있는 비를 반환합니다. NULL 값의 그룹 String 결과입니다.
비교적 추상적이고 이해하기 어렵습니다.

간단하게 이해하면 실제로는 다음과 같습니다. group_concat()은 어떤 행이 동일한 그룹에 속하는지 계산하고 동일한 그룹에 속하는 열을 표시합니다. 반환할 열은 함수

매개변수(즉, 필드 이름)에 의해 결정됩니다. 그룹화 기준이 있어야 합니다. 즉, 그룹화 기준으로 지정한 컬럼을 기준으로 그룹화하는 것입니다.

group_concat 함수는 내부적으로 group by 문을 실행해야 할 것 같습니다.

1. 테스트 문:

SELECT
 GROUP_CONCAT(`name`)
FROM
 student
GROUP BY
 `name`;

결과는 이름의 값이 동일한지 찾는 것입니다. 모두 쉼표로 구분하여 다음과 같이 나열합니다.

group_concat('name')

MySQL 열을 행으로 변환하고 필드(그림 및 텍스트)를 병합하는 방법에 대한 자세한 설명

2 .테스트:

SELECT
 GROUP_CONCAT(`name`)
FROM
 student
;

결과:

group_concat('name')

MySQL 열을 행으로 변환하고 필드(그림 및 텍스트)를 병합하는 방법에 대한 자세한 설명

위의 내용은 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')

MySQL 열을 행으로 변환하고 필드(그림 및 텍스트)를 병합하는 방법에 대한 자세한 설명

결론: 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 열을 행으로 변환하고 필드(그림 및 텍스트)를 병합하는 방법에 대한 자세한 설명

위 내용은 MySQL 열을 행으로 변환하고 필드(그림 및 텍스트)를 병합하는 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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