mysql 열 줄 바 꾸 기,필드 통합 방법(필수)

데이터 시트:

열 전환:max(case when then)를 이용 합 니 다.
max---취 합 함수 최대 값
(case course when'국어'then score else 0 end)---판단
as 국어---별명

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 값 을 가 진 문자열 결 과 를 되 돌려 줍 니 다.
추상 적 이어서 이해 하기 어렵다.
통속 적 으로 이해 하면 사실은 이렇다:groupconcat()는 어떤 줄 이 같은 그룹 에 속 하 는 지 계산 하고 같은 그룹 에 속 하 는 열 을 표시 합 니 다.어떤 열 을 되 돌려 야 하 는 지 편지 로 보 냅 니 다.
매개 변수(필드 이름)를 세 어 결정 합 니 다.그룹 을 나 누 려 면 그룹 by 가 지정 한 열 에 따라 그룹 을 나 누 는 표준 이 있어 야 합 니 다.
group_concat 함 수 는 내부 에서 group by 문 구 를 실 행 했 을 것 입 니 다.이것 은 제 추측 입 니 다.
1.테스트 문장:

SELECT
 GROUP_CONCAT(`name`)
FROM
 student
GROUP BY
 `name`;
결 과 는 name 에서 어떤 값 이 같은 지 찾 아 보 세 요.같 으 면 모두 열거 하고 쉼표 로 나 누 어 보 세 요.다음 과 같 습 니 다.
group_concat('name')

2.테스트:

SELECT
 GROUP_CONCAT(`name`)
FROM
 student
;
결과:
group_concat('name')

위 에서 증명 할 수 있 습 니까?groupconcat 는 group by 구문 과 동시에 사용 해 야 효과 가 있 습 니까?다음은 실제 테스트 를 진행 하 였 다.
3.테스트 상수 대 groupconcat()의 설정 영향:
SET @@GROUP_CONCAT_MAX_LEN=4
매 뉴 얼 에서 설정 한 문법 은 다음 과 같 습 니 다.
SET [SESSION | GLOBAL] group_concat_max_len = val;
두 가 지 는 어떤 차이 가 있 습 니까?
SET @@global.GROUP_CONCAT_MAX_LEN=4;
global 은 생략 할 수 있 습 니 다.그러면 SET@@GROUPCONCAT_MAX_LEN=4;
4.사용 문
SELECT
GROUP_CONCAT(`name`)
FROM
student;
결과 획득:
group_concat('name')

결론:groupconcat()함 수 는 group by 구문 과 함께 사용 해 야 필요 한 효 과 를 얻 을 수 있 습 니 다.
이 유 는 이렇게 이해 할 수 있 습 니 다:groupconcat()는 x 그룹 에 속 하 는 모든 구성원(함수 내 열 매개 변 수 는 어떤 필드 를 표시 해 야 하 는 지 지정 합 니 다)을 얻 었 습 니 다.x 조 는 어디에서 왔 습 니까?
group by 가 지정 하지 않 으 면 group 을 전혀 모 릅 니 다.concat()는 어느 그룹 에 따라 구성원 을 표시 합 니까?그래서 위 에 group by 자구 가 없 을 때 유비,관우,장비,유비,관우,장비,유비,유비,유비,관우,장비 가 나 타 났 다.
실제로 언제 이 함 수 를 사용 해 야 합 니까?
검색 결과 가 이 렇 습 니 다.왼쪽 에 그룹 이름 을 표시 하고 오른쪽 에 이 그룹의 모든 구성원 정 보 를 표시 하고 싶 습 니 다.이 함 수 를 사용 하면 많은 일 을 절약 할 수 있다.
그리고 만약 에 제 가 이렇게 사용한다 면:

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)

이상 의 my sql 열 을 옮 기 고 필드 를 통합 하 는 방법(필수)은 바로 작은 편집 이 여러분 에 게 공유 하 는 모든 내용 입 니 다.참고 하 시 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 사랑 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기