4
    设置@sql1 = '';

    选择
      GROUP_CONCAT(DISTINCT
        连接(
          'MAX(IF(field_id = ''',
          字段 ID,
          ''', 值, NULL)) AS `',
          字段ID,'`'
        )
      ) 进入@sql1
    来自内容详细信息;
    SET @sql1 = CONCAT('SELECT', @sql1, ' FROM content_details GROUP BY content_id');
    选择@sql1;
    从@sql1准备stmt;
    执行语句;
    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 回答