当前位置: 首页 > 面试题库 >

在MySQL中出现GROUP_CONCAT和Longtext问题

江航
2023-03-14
问题内容

SQL …

UPDATE Threads t 
SET t.Content = (
    SELECT GROUP_CONCAT(a.Content ORDER BY a.PageID SEPARATOR '<!-- pagebreak -->') 
    FROM MSarticlepages a
    WHERE a.ArticleID = t.MSthreadID GROUP BY a.ArticleID
)

如您所见,它占用了文章的所有页面(每个页面均以长文本形式存储在单独的行中),并通过GROUP_CONCAT将它们分成单个长文本行。问题在于结果只有太多的字符,然后它被完全截断,丢失了大约90%的内容。CONCAT是否不能很好地处理长文本,还是我做错了其他事情?


问题答案:

根据MySQL手册,最大长度GROUP_CONCATgroup_concat_max_len系统变量定义,默认为1024。

可以使用以下命令来增加此值:

SET group_concat_max_len = <int>

但是,应注意,的值group_concat_max_len本身受另一个系统变量(max_allowed_packet默认值为1,048,576)的限制。

使用相同的语法,可以将该值增加到最大值1,073,741,824。

SET max_allowed_packet = <int>


 类似资料:
  • 问题内容: 我在查询中添加了,并终止了性能。添加之前和之后的解释计划是相同的,所以我对如何优化它感到困惑。 这是查询的简化版本: 请注意中的声明。在杀死性能。如果我注释该行并仅输出“ multiple make found”,它将很快执行。知道是什么原因造成的吗? 问题答案: 在此查询的原始非简化版本中,我们有个,它是完全不必要的,并导致group_concat出现性能问题。我不知道为什么会引起这

  • 问题内容: (注意:这个问题不是关于转义查询,而是关于转义结果) 我正在使用GROUP_CONCAT将多行合并为一个逗号分隔的列表。例如,假设我有两个(示例)表: 我想列出所有帖子以及对帖子发表评论的每个用户名的列表: 给我: 这很好用,但是如果用户名包含逗号会破坏用户列表。MySQL是否具有可以让我转义这些字符的功能?(请假定用户名可以包含任何字符,因为这只是示例架构) 问题答案: 如果用户名中

  • 问题内容: 我在MySQL查询中使用,将多行转换为单个字符串。但是,此函数结果的最大长度为字符。 我非常清楚,我可以更改参数以增加此限制: 但是,在我使用的服务器上,我无法更改任何参数。不能通过使用前面的查询,也不能通过编辑任何配置文件。 所以我的问题是:还有其他方法可以将多行查询的输出转换为单个字符串吗? 问题答案: 这个查询有点奇怪,但是不需要另一个查询来初始化变量。并且可以将其嵌入更复杂的查

  • 问题内容: 如果我在MySQL中有一个包含以下数据的表: 如何将其转换为以下格式? 我想我必须使用。但是我不确定它是如何工作的。 问题答案: 您可以在此处看到它的实现: Sql Fiddle演示 。正是您所需要的。 *分两步 *更新 拆分。首先,我们得到一个表,该表具有一个唯一值[Name,id]的所有值(用逗号分隔)。然后从获得的表中,将所有名称和值作为针对每个唯一id的单个值获得。请参见 SQ

  • 问题内容: 我从这样的farmTOanimal表进行联接。有一个类似的farmTotool表 当我在视图中连接表时,得到的结果看起来像这样 现在,我执行GROUP BY FarmID,GROUP_CONCAT(动物)和GROUP_CONCAT(工具), 但是,我真正想要的是看起来像这样的结果。我该怎么做? 问题答案: 您需要使用以下选项:

  • 问题内容: 我正在使用TABLE,需要逻辑上的帮助。 检查下面的URL以获取表结构和示例数据。 http://sqlfiddle.com/#!2/ece06/2 表格架构: 插入的数据: 询问: 输出: 预期输出: 如您所见,查询的输出包含逗号。目前,我们正在使用PHP进行字符串concat,在显示时会拆分! 还有其他方法可以拆分RESULT并在列和相同的ROW中显示每个值吗?同样的结果吗? 注意