MySQL에서 긴 형식에서 넓은 형식으로 데이터 재구성
MySQL에서는 데이터가 길거나 긴 형식으로 저장되는 경우가 많습니다. 동일한 엔터티에 대해 별도의 행에 저장됩니다. 그러나 분석 및 보고 목적으로는 각 행이 엔터티를 나타내고 각 열이 속성을 나타내는 와이드 형식으로 데이터를 보유하는 것이 더 편리할 수 있습니다.
MySQL을 사용하여 긴 형식 데이터를 변환할 수 있나요? 외부 스크립팅 없이 와이드 포맷으로 전환하시겠습니까? 예, MySQL의 강력한 피벗 테이블 기능을 사용하면 가능합니다.
와이드 테이블 생성
키 목록 가져오기: 쿼리를 사용하여 긴 형식 테이블에 있는 모든 고유 키를 검색합니다. like:
SELECT DISTINCT key FROM table;
테이블 값 채우기
크로스탭 쿼리를 통해 와이드 테이블의 값을 채울 수 있습니다. 다음 쿼리는 이를 보여줍니다.
SELECT country, MAX(IF(key='President', value, NULL)) AS President, MAX(IF(key='Currency', value, NULL)) AS Currency, ... -- Add other key-value pairs as needed FROM table GROUP BY country;
이 쿼리는 긴 테이블의 각 행을 확인하고 해당 국가의 각 키-값 쌍에 대한 최신 값만 반환합니다. IF 조건이 있는 MAX 함수는 가장 최근 값이 유지되도록 보장합니다.
예를 들어, 질문에 제공된 입력 데이터는 다음과 같이 변환됩니다. 형식:
입력:
country | attrName | attrValue | key |
---|---|---|---|
US | President | Obama | 2 |
US | Currency | Dollar | 3 |
China | President | Hu | 4 |
China | Currency | Yuan | 5 |
출력:
country | President | Currency |
---|---|---|
US | Obama | Dollar |
China | Hu | Yuan |
결론
MySQL 피벗 테이블을 사용하면 다음이 간단합니다. 데이터를 긴 형식에서 넓은 형식으로 재구성하여 분석 및 보고에 더 적합하게 만듭니다. 이 방법은 효율적이며 속성 수에 제한 없이 테이블에 적용할 수 있습니다.
위 내용은 MySQL은 외부 스크립트 없이 긴 형식의 데이터를 와이드 형식으로 변환할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!