如何使用 GROUP_CONCAT 在 SQLite 中有效地将多行中的值连接成单个字符串?

Susan Sarandon
发布: 2024-11-04 18:57:01
原创
1042 人浏览过

How can I efficiently concatenate values from multiple rows into a single string in SQLite using GROUP_CONCAT?

理解 SQLite 中的 GROUP_CONCAT

处理关系数据库模式时,通常需要将表中多行的值连接到单个表中细绳。在 SQLite 中,GROUP_CONCAT 函数为此任务提供了强大的解决方案。

您的数据和目标

考虑以下示例数据,它代表与摘要相关的作者:

1 A
1 B
1 C
1 D
2 E
2 F
3 G
3 H
3 I
3 J
3 K
登录后复制

您希望将此数据转换为一种格式,其中每个唯一的摘要 ID (_id) 与以逗号分隔的相应作者姓名列表相关联,如下所示:

1 A,B,C,D
2 E,F
登录后复制

将 GROUP_CONCAT 与聚合函数结合使用

GROUP_CONCAT 函数与聚合函数和 GROUP BY 子句相结合,可以实现此目标。一种常见的方法是使用子查询创建中间表,正如您最初尝试的那样。然而,您错过了关键的一步。

正确的方法

要正确使用 GROUP_CONCAT,请执行以下步骤:

  1. 连接表:使用 JOIN 子句建立相关表之间的关系,确保行正确分组以进行串联。
  2. 使用聚合函数:应用聚合函数 (例如,GROUP_CONCAT)来组合由 GROUP BY 子句标识的重复组的值。
  3. GROUP BY 子句: 在 FROM 子句后面包含 GROUP BY 子句以指定要指定哪些列对数据进行分组。

更正的查询

以下是遵循以下原则的更正查询:

SELECT ABSTRACTS_ITEM._id, GROUP_CONCAT(ABSTRACT_AUTHOR.NAME) AS GroupedName
FROM ABSTRACTS_ITEM 
JOIN AUTHORS_ABSTRACT ON ABSTRACTS_ITEM._id = AUTHORS_ABSTRACT.ABSTRACTSITEM_ID
JOIN ABSTRACT_AUTHOR ON ABSTRACT_AUTHOR._id = AUTHORS_ABSTRACT.ABSTRACTAUTHOR_ID
GROUP BY ABSTRACTS_ITEM._id;
登录后复制

替代查询

或者,您可以像最初尝试的那样使用子查询方法,但使用正确的语法:

SELECT ID,
GROUP_CONCAT(NAME) 
FROM
    (select ABSTRACTS_ITEM._id AS ID,
     Name
     from
    ABSTRACTS_ITEM , ABSTRACT_AUTHOR , AUTHORS_ABSTRACT
    where
    ABSTRACTS_ITEM._id = AUTHORS_ABSTRACT.ABSTRACTSITEM_ID
    and
    ABSTRACT_AUTHOR._id = AUTHORS_ABSTRACT.ABSTRACTAUTHOR_ID)
GROUP BY ID;
登录后复制

两个查询都将成功连接每个摘要 ID 的作者姓名,提供所需的输出格式。

以上是如何使用 GROUP_CONCAT 在 SQLite 中有效地将多行中的值连接成单个字符串?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板