mysql - 在左连接中使用 group_concat

标签 mysql join group-concat

我想我的代码可能太过偷偷摸摸:p 我正在尝试将两张表链接在一起,一张表有 1 行,另一个表有几行。但我只想返回第一个表的一行和另一行。因此,我尝试使用 GROUP_CONCAT 将我的联接更改为单行,如下所示:

col 1 || col 2 || col 3 (linked)
----------------------------------
  23  ||  Data ||  data, data, data

然后我可以打破这个。

我认为问题是,只有当你有东西可以加入时这才真的有效吗?如果我没有连接行那么它们似乎会被忽略?如果我在子查询中执行此操作,它会返回 null 吗?

这是我的查询

子查询

SELECT * FROM wp_fishy_posts p 
    LEFT JOIN (SELECT GROUP_CONCAT(i.path,',') AS linked_images,l.postID as link_id 
        FROM wp_fishy_images i 
        LEFT JOIN wp_fishy_images_post_link l ON l.imageID=i.ID) AS l ON l.link_id=p.ID
    WHERE p.post_type='image'

连接行时返回 null?

SELECT GROUP_CONCAT(i.path,',') AS linked_images,p.*
FROM wp_fishy_posts p
(SELECT i.path,l.postID as link_id 
    FROM wp_fishy_images i 
    LEFT JOIN wp_fishy_images_post_link l ON l.imageID=i.ID) AS l ON l.link_id=p.ID
WHERE p.post_type='image'

不确定我做错了什么? :S 提前致谢!

最佳答案

您需要在子查询中group by:

SELECT *
FROM wp_fishy_posts p LEFT JOIN
     (SELECT GROUP_CONCAT(i.path,',') AS linked_images, l.postID as link_id 
      FROM wp_fishy_images i LEFT JOIN
           wp_fishy_images_post_link l
           ON l.imageID = i.ID
      GROUP BY l.postId
------^
     ) l
     ON l.link_id = p.ID
WHERE p.post_type = 'image';

关于mysql - 在左连接中使用 group_concat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33902749/

相关文章:

mysql - 更改表以添加外键

c# - 循环插入问题,重新加载页面加载?

java - Hibernate 3 与 mysql

MYSQL 仅在用户订阅组时显示帖子

Mysql:连接五个表

sql汇总多个表中的数据

mysql - 将多行连接成一行

php - 网站是通过IP地址而不是域名访问的?

mysql - 使用双重连接选择多个表值

mysql - 在 MySQL 中加入具有相似值的行