MySQL 데이터 투시 표 에 대해 간단히 이야기 합 니 다.

나 는 이런 제품 부품 표를 한 장 가지 고 있다.
부분 적

part_id   part_type   product_id
--------------------------------------
1      A       1
2      B       1
3      A       2
4      B       2
5      A       3
6      B       3
다음 표 로 돌아 가 는 조 회 를 원 합 니 다.

product_id   part_A_id   part_B_id
----------------------------------------
1        1       2
2        3       4
3        5       6
실제 실시 중 에 수백 만 개의 제품 부품 이 있 을 것 이다.
최 적 답안
불 행 히 도 MySQL 은 PIVOT 기능 이 없 지만 취 합 함수 와 CASE 문 구 를 사용 하여 모델 링 을 할 수 있 습 니 다.동적 버 전에 대해 서 는 사전 준비 문 구 를 사용 해 야 합 니 다.

SET @sql = NULL;
SELECT
 GROUP_CONCAT(DISTINCT
  CONCAT(
   'max(case when part_type = ''',part_type,''' then part_id end) AS part_','_id'
  )
 ) INTO @sql
FROM
 parts;
SET @sql = CONCAT('SELECT product_id,',@sql,' 
         FROM parts 
          GROUP BY product_id');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
몇 열 만 있 으 면 정적 버 전 을 사용 할 수 있 습 니 다.

select product_id,max(case when part_type ='A' then part_id end) as Part_A_Id,max(case when part_type ='B' then part_id end) as Part_B_Id
from parts
group by product_id
총결산
이상 은 우리 가 당신 을 위해 수집 하고 정리 한 MySQL 동적 투시 의 모든 내용 입 니 다.문장 이 MySQL 동적 투시 가 직면 한 프로그램 개발 문 제 를 해결 하 는 데 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기