在MySQL 中將資料從長格式重塑為寬格式
在MySQL 中,資料通常以長格式或高格式儲存,其中多個屬性對於同一實體儲存在單獨的行中。然而,出於分析和報告的目的,使用寬格式的資料會更方便,其中每行代表一個實體,每列代表一個屬性。
MySQL 可以用來轉換長格式資料嗎沒有外部腳本的寬格式?是的,可以使用 MySQL 強大的資料透視表功能。
建立寬表
取得鍵列表:使用查詢來擷取長格式表中存在的所有不同鍵例如:
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中文網其他相關文章!