首頁 > 資料庫 > mysql教程 > 如何在 MySQL 中將逗號分隔的清單拆分為多行?

如何在 MySQL 中將逗號分隔的清單拆分為多行?

Susan Sarandon
發布: 2025-01-06 11:51:41
原創
305 人瀏覽過

How to Split Comma-Separated Lists into Multiple Rows in MySQL?

在MySQL 中將逗號分隔的列表拆分為多行

問題:

一張表包含一個帶有逗號分隔值的列,這些值用作另一個表的外鍵。如何透過連接或查詢來處理這些數據,以在新表中建立多個條目,從而有效地「非規範化」數據?

解決方案:

MySQL 提供了一個使用 FIND_IN_SET() 分割這些逗號分隔清單的解決方案函數。

SELECT material_id
FROM materials
WHERE FIND_IN_SET(name, part.material) > 0;
登入後複製

此查詢會擷取材料表中每個名稱的material_id,該名稱出現在零件表材料列中以逗號分隔的清單中。結果是根據需要包含part_id和material_id對的展平表。

範例:

考慮以下資料:

+---------+-------------+
| part_id | material    |
+---------+-------------+
|     339 | 1.2mm;1.6mm |
|     970 | 1.6mm       |
+---------+-------------+
登入後複製

下列查詢會將資料列分割為單獨的行:

SELECT part_id, material_id
FROM materials
WHERE FIND_IN_SET(name, part.material) > 0;
登入後複製

結果將是:

+---------+-------------+
| part_id | material_id |
+---------+-------------+
|     339 |           1 |
|     339 |           2 |
|     970 |           2 |
+---------+-------------+
登入後複製

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

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