首頁 > 資料庫 > mysql教程 > 如何在 MySQL 中將多個子行合併為一個父行?

如何在 MySQL 中將多個子行合併為一個父行?

Linda Hamilton
發布: 2024-12-03 01:04:11
原創
677 人瀏覽過

How to Combine Multiple Child Rows into a Single Parent Row in MySQL?

在MySQL 中將多個子行合併為一個父行

處理具有巢狀資料的結構化資料表時,合併可能很有用將多個子行合併到一個父行以提供更聚合的資料視圖。需要這樣做的常見場景是在使用訂單管理系統時,例如給定範例中所示的系統。

考慮兩個表:Ordered_Item 和 Ordered_Options。 Ordered_Item 表表示訂購的商品,而 Ordered_Options 表包含與每個訂購商品關聯的其他詳細資訊或選項。目標是輸出一個查詢,該查詢將 Ordered_Item 表中的 Item_Name 欄位與 Ordered_Options 表中的對應選項值組合起來,按特定順序分組並以逗號分隔。

一個有效的解決方案是利用 MySQL 的 GROUP_CONCAT函數,它將多行中的值連接起來,並按指定列進行分組。下面的查詢實現了所需的結果:

SELECT
  ordered_item.id AS `Id`,
  ordered_item.Item_Name AS `ItemName`,
  GROUP_CONCAT(Ordered_Options.Value) AS `Options`
FROM
  ordered_item
JOIN
  ordered_options
ON
  ordered_item.id = ordered_options.ordered_item_id
GROUP BY
  ordered_item.id
登入後複製

此查詢將產生以下輸出:

Id  ItemName         Options
1   Pizza            Pepperoni,Extra Cheese
2   Stromboli        Extra Cheese
登入後複製

GROUP_CONCAT 函數確保選項值連接成單一字串並保留選項的順序基於其Option_Number 列。這種方法效率很高,可以處理大量選項,而不需要靜態解決方案或查詢中任何額外的複雜性。

為了處理連線結果超過預設最大長度 1024 個字元的情況,MySQL 提供了group_concat_max_len 變數。將此變數設為更高的值(如下所示)將容納更大的串聯字串:

SET SESSION group_concat_max_len = 8192;
登入後複製

以上是如何在 MySQL 中將多個子行合併為一個父行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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