我需要运行如下查询:

SELECT p.id, p.name, 
       (SELECT name 
          FROM sites s 
         WHERE s.id = p.site_id) AS site_list
  FROM publications p

但是我希望子 Select 返回一个逗号分隔的列表,而不是一列数据.这可能吗?如果可能,怎么可能?

推荐答案

您可以使用GROUP_CONCAT来执行该操作,例如

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;

Mysql相关问答推荐

SQL中的搜索模式

返回包含某一列的分组最大值的行,说明列中的重复值

WordPress的sql命令从帖子中删除随机文本

警告:MYSQL_OPT_RECONNECT 已弃用

当mysql中只有一个索引列时,为什么使用范围条件锁定读取会锁定每条记录?

如何创建将行转换为列的 MySQL 查询?

在 where 子句中左连接多个值

如何使用同一个表在 2 个字段上左连接

mySQL 中的主数据库和 IF 错误?

基于 2 列的重复行的 SQL 查询

在 MySQL 中转换 JSON 数组值

MySQL 视图

MySQL Workbench - 如何同步 EER 图

最好的 MySQL 性能调优工具?

在 MySQL 中,我应该 Select 哪种排序规则?

如何用一系列日期填充表格?

由于在 MySQL 中使用保留字作为表名或列名导致的语法错误

MySQL与空值比较

MySQL - 错误 1045 - 访问被拒绝

将mysql查询输出存储到shell变量中