本篇內(nèi)容介紹了“SQL函數(shù)Group_concat如何使用”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
10年積累的網(wǎng)站建設(shè)、網(wǎng)站制作經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有平谷免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
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 上場(chǎng)?。?!
SELECT id,GROUP_CONCAT(score) FROM testgroup GROUP BY id
可以看到 根據(jù)id 分成了三行 并且分?jǐn)?shù)默認(rèn)用 逗號(hào) 分割 但是有每個(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)可以根絕對(duì)應(yīng)的分隔符 對(duì)score 字段進(jìn)行分割 但是有可能存在score 數(shù)據(jù)類型過大問題
達(dá)到需求目的?。?!
今天出了個(gè)線上bug,先通過其他手段把bug避免了,然后打日志查看具體原因,發(fā)現(xiàn)是一個(gè)sql查出來的字段內(nèi)容少了很多,一查詢?cè)瓉硎莋roup_concat函數(shù)最大長度只有1024,超過長度會(huì)被截取。
修改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;
特別注意:只對(duì)當(dāng)前會(huì)話有效
“SQL函數(shù)Group_concat如何使用”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!