4
    @sql1 = ''; を設定します。

    選択する
      GROUP_CONCAT(DISTINCT
        CONCAT(
          'MAX(IF(field_id = ''',
          field_id、
          ''', 値, NULL)) AS `',
          field_id,'`'
        )
      ) @sql1 に
    FROM content_details;
    SET @sql1 = CONCAT('SELECT ', @sql1, ' FROM content_details GROUP BY content_id');
    @sql1 を選択します。
    PREPARE stmt FROM @sql1;
    EXECUTE ステートメント;
    DEALLOCATE PREPARE stmt;
    

上記のコード @sql1 変数では、一部の限定された文字のみを格納しています。ここでは、文字列を動的に連結しています。ストリングの正確な全長が将来どうなるかはわかりません。私の質問は、無制限の文字長を $sql1 変数に設定する方法です。ご意見をお聞かせください。

4

1 に答える 1

12

に問題があるようですGROUP_CONCAT_MAX_LEN。セッション中にこの変数の長さを調整できます。

この変数のデフォルトの長さは 1024 です。以下を使用できるはずです。

set session group_concat_max_len = yourNewValue;

これをグローバルに設定すると、他のすべての接続に影響を与えるため、セッションに対してのみ設定する必要がある場合があります。

于 2013-06-04T12:30:57.487 に答える