> 데이터 베이스 > MySQL 튜토리얼 > MySQL의 GROUP_CONCAT 함수에서 값의 순서를 어떻게 제어할 수 있습니까?

MySQL의 GROUP_CONCAT 함수에서 값의 순서를 어떻게 제어할 수 있습니까?

DDD
풀어 주다: 2024-12-01 15:44:12
원래의
631명이 탐색했습니다.

How Can I Control the Order of Values in MySQL's GROUP_CONCAT Function?

GROUP_CONCAT의 결과 순서

GROUP_CONCAT 함수를 사용하여 그룹화된 행의 값을 결합하는 경우 이러한 값의 순서를 유지하는 것이 유용할 수 있습니다.

문제: 순서가 지정되지 않은 결과

라는 이름의 테이블이 있다고 가정합니다. client_id, views 및 ratio 열이 있는 "li"입니다. client_id별로 행을 그룹화하고 뷰 값을 연결하려고 합니다. 우리는 처음에 다음을 시도합니다.

SELECT li.client_id,
       group_concat(li.views) AS views,
       group_concat(li.percentage) FROM li
       GROUP BY client_id;
로그인 후 복사

이렇게 하면 뷰가 연결된 결과가 생성되지만 임의의 순서가 적용됩니다.

+-----------+-------------------+-----------------------------+
| client_id | views             | group_concat(li.percentage) |
+-----------+-------------------+-----------------------------+
|         1 | 6,4,9,2,7,5,3,8,1 | 20,55,56,67,80,66,33,34,52  |
+-----------+-------------------+-----------------------------+
로그인 후 복사

해결책: GROUP_CONCAT 내에서 주문

GROUP_CONCAT 내에서 결과를 정렬하려면 ORDER BY를 사용할 수 있습니다. 함수:

SELECT li.client_id,
       group_concat(li.views ORDER BY li.views ASC) AS views,
       group_concat(li.percentage ORDER BY li.views ASC) AS percentage
       FROM li
       GROUP BY client_id
로그인 후 복사

이것은 동일한 순서로 해당 백분율 값을 유지하면서 조회수 열을 오름차순으로 정렬합니다.

+-----------+-------------------+----------------------------+
| client_id | views             | percentage                 |
+-----------+-------------------+----------------------------+
|         1 | 1,2,3,4,5,6,7,8,9 | 52,67,33,55,66,20,80,34,56 |
+-----------+-------------------+----------------------------+
로그인 후 복사

위 내용은 MySQL의 GROUP_CONCAT 함수에서 값의 순서를 어떻게 제어할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿