欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

mysql group by 多個行轉換為一個字段

 更新時間:2025年08月26日 11:53:59   作者:悟能不能悟  
本文主要介紹了mysql group by 多個行轉換為一個字段,可以使用聚合函數GROUP_CONCAT()函數,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

在 MySQL 中,將多行數據合并為 ?單個字段? 可以使用聚合函數 GROUP_CONCAT()。這是處理「多行轉單字段」場景(如合并列表、標簽聚合等)的標準解決方案。以下是詳細說明和示例:

核心語法

SELECT 
   分組字段,
   GROUP_CONCAT([DISTINCT] 合并字段 
                [ORDER BY 排序字段] 
                [SEPARATOR '分隔符'])
FROM 表名
GROUP BY 分組字段;
  • DISTINCT:去重
  • ORDER BY:結果排序
  • SEPARATOR:自定義分隔符(默認逗號,

示例場景

原始數據表user_skills

user_idskill
1Java
1Python
1SQL
2JavaScript
2HTML

目標:每個用戶合并技能列表

user_idskills
1Java, Python, SQL
2JavaScript, HTML

實現 SQL

SELECT 
   user_id,
   GROUP_CONCAT(skill SEPARATOR ', ') AS skills
FROM user_skills
GROUP BY user_id;

高級用法

1. 結果去重 + 排序

SELECT 
   user_id,
   GROUP_CONCAT(DISTINCT skill 
                ORDER BY skill ASC    -- 按字母升序排序
                SEPARATOR ' / ')      -- 自定義分隔符
FROM user_skills
GROUP BY user_id;

結果:

user_idskills
1Java / Python / SQL
2HTML / JavaScript

2. 關聯表合并字段(多表 JOIN)

SELECT 
   u.user_id,
   u.user_name,
   GROUP_CONCAT(s.skill) AS skills
FROM users u
JOIN user_skills s ON u.user_id = s.user_id
GROUP BY u.user_id, u.user_name;

?? 重要參數

GROUP_CONCAT() 受系統(tǒng)變量限制:

  1. ?長度限制?:默認 1024 字符

    -- 臨時調高限制(當前會話有效)
    SET SESSION group_concat_max_len = 1000000;
  2. ?截斷處理?:超過長度時自動截斷(不會報錯)

對比其他方案

方法適用場景特點
GROUP_CONCAT()多行合并為單字段(字符串)靈活的分隔符和排序控制
子查詢 + JSON_ARRAY()需要結構化數據輸出MySQL 5.7+ 支持
應用層代碼處理復雜合并邏輯更靈活但增加網絡傳輸

復雜案例:合并多列數據

SELECT 
   department,
   GROUP_CONCAT(
      CONCAT(employee_name, ':', salary)   -- 合并姓名和薪資
      ORDER BY salary DESC
      SEPARATOR ' | '
   ) AS emp_data
FROM employees
GROUP BY department;

結果示例:

departmentemp_data
SalesBob:8500
ITTom:9500

通過 GROUP_CONCAT() 可以高效實現多行轉單字段的需求,特別適合生成標簽云、合并列表等業(yè)務場景。

到此這篇關于mysql group by 多個行轉換為一個字段的文章就介紹到這了,更多相關mysql group by 轉換為一個字段內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Mysql更新varchar存儲Json數據的操作方法

    Mysql更新varchar存儲Json數據的操作方法

    這篇文章主要介紹了Mysql更新varchar存儲Json數據的操作方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-12-12
  • Linux下mysql新建賬號及權限設置方法

    Linux下mysql新建賬號及權限設置方法

    Linux下mysql新建賬號及權限設置方法,其實linux與windows下的設置方法一樣的,都是命令行操作
    2012-07-07
  • MySQL數據庫約束和多表查詢實例代碼

    MySQL數據庫約束和多表查詢實例代碼

    這篇文章主要介紹了MySQL數據庫約束和多表查詢的相關資料,文中通過代碼介紹的非常詳細,還總結了SQL執(zhí)行順序,為后續(xù)索引與事務內容做鋪墊,需要的朋友可以參考下
    2025-07-07
  • mysql中取字符串中的數字的語句

    mysql中取字符串中的數字的語句

    在很多時間我們需要把字符串的數字給取出來,通常大家會用php,asp等這類來操作,本文章介紹了在sql中取字符中的數字辦法,有需要的朋友可以參考一下
    2012-04-04
  • MySQL數據表字段操作指南之添加、修改與刪除方法

    MySQL數據表字段操作指南之添加、修改與刪除方法

    這篇文章主要介紹了MySQL中使用ALTER TABLE語句修改數據表結構的方法,包括添加、修改和刪除字段,通過實例演示了如何高效地管理數據表結構,需要的朋友可以參考下
    2024-12-12
  • MySQL8.0.26的安裝與簡化教程(全網最全)

    MySQL8.0.26的安裝與簡化教程(全網最全)

    MySQL關是一種關系數據庫管理系統(tǒng),所使用的 SQL 語言是用于訪問數據庫的最常用的標準化語言,今天通過本文給大家分享MySQL8.0.26的安裝與簡化教程使全網最詳細的安裝教程,需要的朋友參考下吧
    2021-07-07
  • PHP mysqli擴展庫 預處理技術的使用分析

    PHP mysqli擴展庫 預處理技術的使用分析

    本篇文章,介紹了PHP mysqli擴展庫 預處理技術的使用分析。需要的朋友參考下
    2013-05-05
  • 深入解析MySQL中的Redo Log、Undo Log和Binlog

    深入解析MySQL中的Redo Log、Undo Log和Binlog

    本文詳細介紹了MySQL中的RedoLog、UndoLog和Binlog的背景、業(yè)務場景、功能、底層實現原理以及使用措施,通過Java代碼示例展示了如何與這些日志進行交互,進一步深化了對MySQL日志系統(tǒng)的理解,理解并合理使用這些日志,可以有效地提升數據庫的性能和可靠性
    2024-10-10
  • 數據庫中笛卡爾積定義、生成與避免策略實踐方法

    數據庫中笛卡爾積定義、生成與避免策略實踐方法

    笛卡爾積是指兩個集合中的每個元素都與另一個集合中的每個元素組合形成的所有元素的集合,這篇文章主要給大家介紹了關于數據庫中笛卡爾積定義、生成與避免策略實踐的相關資料,需要的朋友可以參考下
    2024-05-05
  • Mysql效率優(yōu)化定位較低sql的兩種方式

    Mysql效率優(yōu)化定位較低sql的兩種方式

    通過慢查詢日志定位那些執(zhí)行效率較低的 SQL 語句,用 --log-slow-queries[=file_name] 選項啟動時, mysqld 會 寫一個包含所有執(zhí)行時間超過 long_query_time 秒的 SQL 語句的日志文件,通過查看這個日志文件定位效率較低的 SQL
    2015-10-10

最新評論