ホームページ  >  記事  >  データベース  >  MySQLのgroup_concat()関数の使用例を詳しく解説

MySQLのgroup_concat()関数の使用例を詳しく解説

零下一度
零下一度オリジナル
2017-07-03 09:30:481158ブラウズ

私は最近仕事で問題に遭遇しました:

システムの一部の論理処理はストアド プロシージャを使用して実装されていますが、ある日カスタマー サービスから、注文に含まれる基本的な製品リソースを確認した後、注文が行われなかったと報告されました。問題ありませんでした。

注文のストアド プロシージャには 2 行のコードがあります:

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;

ストアド プロシージャの実行後、変数 _err は 1 を返します。問題を見つけるにはストアド プロシージャをデバッグするしかありません。次の段落をデバッグしていると、この 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;

一時テーブル tmp_order_detail に大量のデータがあるため、group_concat の問題だと推測したので、一時テーブルのデータが半分に減り、成功したことがわかったので、group_concat に長さの制限があるのではないかと思ってググってみたところ、それは本当でした。

group_concat 関数について:

group_concat: デフォルトの接続可能な長さは 1024 です。最大長が設定されている場合、この長さを超えるとこの長さにカットされます。 ) ステートメント、group_concat を使用すると、制限は無効になります。解決策:

1MySQL 構成ファイルを変更します。も使用しますSQL ステートメントの設定:

#需要设置的长度
group_concat_max_len = 5120
ストアド プロシージャで上記の 2 番目の方法を採用し、ストアド プロシージャを実行しました。OK、成功しました。 仕事を休みましょう(今日は日曜日です)! ! !

以上がMySQLのgroup_concat()関数の使用例を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。