如何在 MySQL 中將多行合併為單一逗號分隔行?

Patricia Arquette
發布: 2024-11-08 12:21:02
原創
674 人瀏覽過

How to Combine Multiple Rows into a Single Comma-Separated Row in MySQL?

MySQL:將多行轉換為單一逗號分隔行

在MySQL 資料庫中,您可能會遇到這樣的情況:將會遇到這樣的情況:將會多行壓縮為一行,特定列表示為逗號分隔值。這可以透過利用 GROUP_CONCAT 函數來實現,如以下範例場景所示。

範例場景:

考慮兩個表格:DISH 和 DISH_HAS_DISHES,其中 DISH 保存所有可用的菜餚,DISH_HAS_DISHES 定義 DISH 之間的一對多關係。 DISH 表具有以下結構:

DISH:
dish_id   dish_name
1         dish_1
2         dish_2
3         dish_3
4         dish_4
登入後複製

而DISH_HAS_DISHES 表如下圖所示:

DISH_HAS_DISHES:
meal_id   dish_id
1         2
1         3
1         4
登入後複製

目標:

目標:
meal_id     dish_ids     dish_names
1           2,3,4        dish_2, dish_3, dish_4
登入後複製

我們的目標是將資料轉換為每餐都有對應行的格式,列出其菜餚ID 和名稱:逗號分隔值。所需的輸出是:

解:
SELECT m.meal_id, 
        GROUP_CONCAT(dish_id) AS dish_ids, 
        GROUP_CONCAT(dish_name) AS dish_names
FROM DISH_HAS_DISHES m JOIN DISH d ON (m.dish_id = d.dish_id)
GROUP BY meal_id
登入後複製

為了實現這一點,我們將使用GROUP_CONCAT 函數以及一些簡單的JOIN 操作:
  • 在此查詢中:
  • 我們開始透過將DISH_HAS_DISHES 表(m) 與DISH 表(d) 的碟子ID 欄位連接起來。
在 SELECT 語句中,我們使用 GROUP_CONCAT 合併碟子 ID 和碟子名稱欄位中的多個值。

最後,我們按meal_id對結果進行分組,以獲得每個結果的一行meal.透過執行此查詢,我們將獲得所需的輸出,其中每一行代表一頓飯、其菜餚ID 及其對應的菜餚名稱,全部表示為逗號分隔值。當處理表格資料和跨多行合併資訊時,此技術特別有用。

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!