MySQL中使用group_concat()函數(shù)的案例詳細(xì)說明
發(fā)表時(shí)間:2023-08-24 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]最近在工作中遇到一個(gè)問題:我們系統(tǒng)的一些邏輯處理是用存儲(chǔ)過程實(shí)現(xiàn)的,但是有一天客服反饋說訂單下單失敗,查了下單牽扯到的產(chǎn)品基礎(chǔ)資源,沒有問題。下單的存儲(chǔ)過程中有這樣兩句代碼:1 declare _err int default 0;2 DECLARE CONTINUE HANDLER FO...
最近在工作中遇到一個(gè)問題:
我們系統(tǒng)的一些邏輯處理是用存儲(chǔ)過程實(shí)現(xiàn)的,但是有一天客服反饋說訂單下單失敗,查了下單牽扯到的產(chǎn)品基礎(chǔ)資源,沒有問題。
下單的存儲(chǔ)過程中有這樣兩句代碼:
1 declare _err int default 0;2 DECLARE CONTINUE HANDLER FOR SQLEXCEPTION,SQLWARNING,NOT FOUND set _err=1;3 DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' set _err=2;
執(zhí)行存儲(chǔ)過程后 變量_err會(huì)返回1,只能調(diào)試存儲(chǔ)過程找問題了。調(diào)試到下面這段的時(shí)候,發(fā)現(xiàn)執(zhí)行完這句sql,_err就變成1了
1 select group_concat(concat(@room_name,',',run_date,',',total_count) separator ' ') into @order_desc from tmp_order_detail order by run_date;
由于臨時(shí)表tmp_order_detail 中的數(shù)據(jù)比較多,所以猜測是不是group_concat的問題,所以我把臨時(shí)表中的數(shù)據(jù)減少了一半,發(fā)現(xiàn)成功了,所以猜測group_concat是不是有長度限制,google一下,果然。
關(guān)于group_concat函數(shù):
group_concat:默認(rèn)可連接的長度是1024;如果已經(jīng)設(shè)置了最大長度,超過這個(gè)長度就會(huì)被截取至這個(gè)長度;
在查詢(select)語句中,使用了group_concat之后,limit就會(huì)失效;
解決方法:
1、修改MySQL的配置文件:
#需要設(shè)置的長度
group_concat_max_len = 5120
2、也可以使用sql語句設(shè)置:
SET GLOBAL group_concat_max_len=5120;SET SESSION group_concat_max_len=5120;
我在存儲(chǔ)過程中采用了上面的第二種辦法,執(zhí)行存儲(chǔ)過程,OK,成功!
下班(今天是周日)!!!
以上就是MySQL中使用group_concat()函數(shù)的實(shí)例詳解的詳細(xì)內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!
學(xué)習(xí)教程快速掌握從入門到精通的SQL知識(shí)。