SQL函數(shù)Group_concat的用法及說明
SQL函數(shù)Group_concat的用法
完整語法如下
group_concat([DISTINCT] 要連接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'])
SELECT * FROM testgroup

表結(jié)構(gòu)與數(shù)據(jù)如上
現(xiàn)在的需求就是每個(gè)id為一行 在前臺(tái)每行顯示該id所有分?jǐn)?shù)
group_concat 上場?。。?/p>
SELECT id,GROUP_CONCAT(score) FROM testgroup GROUP BY id

可以看到 根據(jù)id 分成了三行 并且分?jǐn)?shù)默認(rèn)用 逗號 分割 但是有每個(gè)id有重復(fù)數(shù)據(jù) 接下來去重
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

最后可以設(shè)置分隔符
SELECT id,GROUP_CONCAT(score SEPARATOR ';') FROM testgroup GROUP BY id

這樣我們的數(shù)據(jù)就根據(jù)id 不同分隔符 放在了一行 前臺(tái)可以根絕對應(yīng)的分隔符 對score 字段進(jìn)行分割 但是有可能存在score 數(shù)據(jù)類型過大問題
達(dá)到需求目的?。?!
Group_concat函數(shù)長度問題
今天出了個(gè)線上bug,先通過其他手段把bug避免了,然后打日志查看具體原因,發(fā)現(xiàn)是一個(gè)sql查出來的字段內(nèi)容少了很多,一查詢原來是group_concat函數(shù)最大長度只有1024,超過長度會(huì)被截取。
解決的方式有三個(gè)
- 修改sql查詢邏輯,避免使用group_concat
- 修改配置文件,添加或修改 group_concat_max_len = 1024000 ,然后重啟服務(wù)。這個(gè)方式是永久性的
- 修改變量
use mysql; SHOW VARIABLES LIKE "group_concat_max_len"; #查詢最大值 SET GLOBAL group_concat_max_len=10240000; SET SESSION group_concat_max_len=10240000;
特別注意:只對當(dāng)前會(huì)話有效
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- 如何修改Mysql中g(shù)roup_concat的長度限制
- mysql group_concat 實(shí)現(xiàn)把分組字段寫成一行的方法示例
- mysql中GROUP_CONCAT的使用方法實(shí)例分析
- MySQL GROUP_CONCAT限制解決方案
- MySQL基于group_concat()函數(shù)合并多行數(shù)據(jù)
- SQL?Server實(shí)現(xiàn)group_concat功能的詳細(xì)實(shí)例
- SQL中concat、concat_ws()、group_concat()的使用與區(qū)別
- MySQL group_concat函數(shù)使用方法詳解
- mysql中GROUP_CONCAT函數(shù)使用及遇到問題詳解
- mysql中GROUP_CONCAT函數(shù)使用技巧及問題詳解
- SQL?Server實(shí)現(xiàn)group_concat函數(shù)的詳細(xì)舉例
- SQL函數(shù)實(shí)現(xiàn)Group_concat用法
相關(guān)文章
面試被問select......for update會(huì)鎖表還是鎖行
select … for update 是我們常用的對行加鎖的一種方式,那么select......for update會(huì)鎖表還是鎖行,本文就詳細(xì)的來介紹一下,感興趣的可以了解一下2021-11-11
mysql性能優(yōu)化腳本mysqltuner.pl使用介紹
無意中發(fā)現(xiàn)了,major哥們開發(fā)的一個(gè)性能分析腳本,很有意思,可以通過這個(gè)腳本學(xué)學(xué)他的思想2013-02-02
MySQL數(shù)據(jù)庫中varchar類型的數(shù)字比較大小的方法
varchar類型的數(shù)據(jù)是不能直接比較大小的,那么MySQL數(shù)據(jù)庫中varchar類型如何進(jìn)行數(shù)字比較大小的,本文就詳細(xì)的介紹一下2021-11-11
mysql5.6 解析JSON字符串方式(支持復(fù)雜的嵌套格式)
這篇文章主要介紹了mysql5.6 解析JSON字符串方式(支持復(fù)雜的嵌套格式),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07
MySQL 8.0.20 安裝教程圖文詳解(windows 64位)
這篇文章主要介紹了MySQL 8.0.20安裝教程(windows 64位),本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有,需要的朋友可以參考下2020-05-05
mysql利用group_concat()合并多行數(shù)據(jù)到一行
把查詢name字段得到的多行記錄進(jìn)行合并,可以通過程序?qū)崿F(xiàn),但也可直接在sql層完成,需要的朋友可以參考下2014-07-07

