共計 1126 個字符,預計需要花費 3 分鐘才能閱讀完成。
本篇內容介紹了“SQL 函數 Group_concat 如何使用”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓丸趣 TV 小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
SQL 函數 Group_concat 的用法完整語法如下
group_concat([DISTINCT] 要連接的字段 [Order BY ASC/DESC 排序字段] [Separator 分隔符])
SELECT * FROM testgroup
表結構與數據如上
現在的需求就是每個 id 為一行 在前臺每行顯示該 id 所有分數
group_concat 上場!!!
SELECT id,GROUP_CONCAT(score) FROM testgroup GROUP BY id
可以看到 根據 id 分成了三行 并且分數默認用 逗號 分割 但是有每個 id 有重復數據 接下來去重
SELECT id,GROUP_CONCAT(DISTINCT score) FROM testgroup GROUP BY id
排序
SELECT id,GROUP_CONCAT(score ORDER BY score DESC) FROM testgroup GROUP BY id
最后可以設置分隔符
SELECT id,GROUP_CONCAT(score SEPARATOR ) FROM testgroup GROUP BY id
這樣我們的數據就根據 id 不同分隔符 放在了一行 前臺可以根絕對應的分隔符 對 score 字段進行分割 但是有可能存在 score 數據類型過大問題
達到需求目的!!!
Group_concat 函數長度問題
今天出了個線上 bug,先通過其他手段把 bug 避免了,然后打日志查看具體原因,發現是一個 sql 查出來的字段內容少了很多,一查詢原來是 group_concat 函數最大長度只有 1024,超過長度會被截取。
解決的方式有三個
修改 sql 查詢邏輯,避免使用 group_concat
修改配置文件,添加或修改 group_concat_max_len = 1024000,然后重啟服務。這個方式是永久性的
修改變量
use mysql;
SHOW VARIABLES LIKE group_concat_max_len # 查詢最大值
SET GLOBAL group_concat_max_len=10240000;
SET SESSION group_concat_max_len=10240000;
特別注意:只對當前會話有效
“SQL 函數 Group_concat 如何使用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注丸趣 TV 網站,丸趣 TV 小編將為大家輸出更多高質量的實用文章!