set @sql1 = ''; SELECT GROUP_CONCAT(DISTINCT CONCAT( 'MAX(IF(field_id = ''', field_id, ''', value, NULL)) AS `', field_id,'`' ) ) INTO @sql1 FROM content_details; SET @sql1 = CONCAT('SELECT ', @sql1, ' FROM content_details GROUP BY content_id'); select @sql1; PREPARE stmt FROM @sql1; EXECUTE stmt; DEALLOCATE PREPARE stmt;
在上面的代码中,@sql1 变量只存储了一些有限的字符。 在这里,我正在动态连接字符串。 我不知道 future 字符串的确切总长度。我的问题是我们如何将无限字符长度设置为 $sql1 变量。请指教。
最佳答案
听起来您的 GROUP_CONCAT_MAX_LEN
有问题.您可以在 session 期间调整此变量的长度。
此变量的默认长度为 1024。您应该能够使用:
set session group_concat_max_len = yourNewValue;
如果你要全局设置它会影响所有其他连接,这就是为什么你可能只想为你的 session 设置它。
关于mysql - 在 Mysql Prepared 语句中增加设置的变量长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16917567/