代码之家  ›  专栏  ›  技术社区  ›  hidar

MySQL join:即使secon表没有匹配的数据,如何从一个表中得到结果

  •  0
  • hidar  · 技术社区  · 6 年前

           SELECT b.id, b.title, b.content, b.slug, b.created_at, GROUP_CONCAT(t.name) as tags
    FROM blogs b INNER JOIN 
         tags t
         ON b.id = t.blog_id
    GROUP BY b.id, b.title;
    

    问题是,如果一个博客没有标签,那么我就没有博客,而不是没有标签的博客,这是如何实现的

    2 回复  |  直到 6 年前
        1
  •  1
  •   Gordon Linoff    6 年前

    你可以用 left join :

    SELECT b.id, b.title, b.content, b.slug, b.created_at, 
           GROUP_CONCAT(t.name) as tags
    FROM blogs b LEFT JOIN 
         tags t
         ON b.id = t.blog_id
    GROUP BY b.id;
    

    通常,选择一组具有 GROUP BY blogs.id blogs ,所以这是从 很好。

        2
  •  0
  •   Shoaeb    6 年前

    我想你要找的是 左外连接 .

    select  b.id,b.title,b.content,b.slug,b.created_at,GROUP_CONCAT(t.name) as tags 
    from
    blogs b left join tags t 
    on b.id = t.blog_id 
    group by b.id,b.title;