以特定格式提取数据(例如逗号分隔的列表)是一项常见任务。 假设您需要出版物详细信息和以逗号分隔的关联站点名称列表。使用子查询的简单方法可能如下所示:
<code class="language-sql">SELECT p.id, p.name, (SELECT name FROM sites s WHERE s.id = p.site_id) AS site_list FROM publications p</code>
但是,这会每行生成一个站点名称,而不是逗号分隔的列表。
创建所需的逗号分隔列表的关键是 GROUP_CONCAT
函数。此函数将多个值连接成一个字符串,并用逗号(或自定义分隔符)分隔。 这是改进的查询:
<code class="language-sql">SELECT p.id, p.name, GROUP_CONCAT(s.name) AS site_list FROM sites s INNER JOIN publications p ON (s.id = p.site_id) GROUP BY p.id, p.name;</code>
此修改后的查询使用 GROUP_CONCAT(s.name)
来组合站点名称。 INNER JOIN
有效链接 publications
和 sites
表,GROUP BY p.id, p.name
确保 GROUP_CONCAT
函数正确聚合每个出版物的站点名称。
以上是如何从 MySQL 查询结果生成逗号分隔的列表?的详细内容。更多信息请关注PHP中文网其他相关文章!