首頁 > 資料庫 > mysql教程 > 如何在 MySQL 中執行動態資料透視?

如何在 MySQL 中執行動態資料透視?

DDD
發布: 2025-01-06 07:35:43
原創
942 人瀏覽過

How to Perform Dynamic Data Pivoting in MySQL?

MySQL 中資料的動態旋轉

資料旋轉是資料轉換中的常見操作,涉及將資料從垂直佈局重塑為水平佈局。在 SQL 中,這可以使用不同的技術來實現,例如 UNPIVOT 或 PIVOT 函數。然而,MySQL 沒有原生的 PIVOT 函數,因此有必要探索替代方法。

MySQL 中動態旋轉的一種方法是使用聚合函數和 CASE 語句動態建構查詢。此方法涉及根據輸出中所需的維度和值動態建立 SQL 語句。

以下範例示範如何使用準備好的語句實現動態透視:

SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'max(case when part_type = ''',
      part_type,
      ''' then part_id end) AS part_',
      part_type, '_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 語句。我們使用 CASE 語句根據part_type 將part_id 分配給適當的資料透視列。然後使用準備好的語句執行產生的 SQL 語句,以獲得更好的效能。

如果您知道輸出中所需的列數有限,則另一種選擇是使用靜態版本的查詢:

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 中執行動態資料透視?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板