理解 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,请执行以下步骤:
更正的查询
以下是遵循以下原则的更正查询:
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中文网其他相关文章!