Mysql 左连接,右表中有更多字段

Mysql 左连接,右表中有更多字段,mysql,Mysql,我有个问题! “我的店铺”表包含4行,每行包含店铺名称、ID和与该店铺相关的其他数据 我还有一个“绑定”表,在其中我可以选择哪些产品类别应该在哪些商店中可见。自然,绑定表将包含更多的行。。。我想从shops表中选择所有的shops,如果shop ID相同,则只连接右表bind表中的行 SELECT * , b.categoryId as bindCategory FROM shops LEFT JOIN bind_shop_category AS b ON shops.shopId = b.s

我有个问题! “我的店铺”表包含4行,每行包含店铺名称、ID和与该店铺相关的其他数据

我还有一个“绑定”表,在其中我可以选择哪些产品类别应该在哪些商店中可见。自然,绑定表将包含更多的行。。。我想从shops表中选择所有的shops,如果shop ID相同,则只连接右表bind表中的行

SELECT * , b.categoryId as bindCategory
FROM shops

LEFT JOIN bind_shop_category AS b
ON shops.shopId = b.shopId
如果我这样做,我会得到所有绑定,以及它们相应的店铺数据,而不仅仅是店铺和它们相应的绑定数据P

这是非常令人困惑的,我不确定我是否100%地阐述了这个问题

嗯。。。预期数据:

  shopId          shopName         bind.categoryId
    1               shop1
    2               shop2            category1
    3               shop3            category1
    4               shop4
试试这个:

SELECT S.* , B.categoryId as bindCategory
FROM shops S
   LEFT JOIN bind_shop_category B
       ON B.shopId = S.shopId

嗯,你的意思可能是:

SELECT shops.*, b.categoryId as bindCategory
FROM shops
LEFT JOIN bind_shop_category AS b
ON shops.shopId = b.shopId
(或者,按照我写的方式:)


更新帖子之后。您需要以下内容

SELECT s.ShopId, s.ShopName , b.categoryId as bindCategory
FROM shops
    LEFT OUTER JOIN bind_shop_category AS b
         ON (shops.shopId = b.shopId)
ORDER BY s.ShopId

如果您只想在一行中列出每个店铺的所有类别,可以使用GROUP_CONCAT

SELECT s.shopId, s.shopName, GROUP_CONCAT(b.categoryId)
FROM shops s
LEFT JOIN bind_shop_category AS b ON (s.shopId = b.shopId)
GROUP BY s.shopId
输出将如下所示

1               shop1            NULL
2               shop2            category1,category2
3               shop3            category1

将左连接更改为内部连接,以仅显示至少有一个类别的店铺。

上面的b和b引用是否冲突,或者不区分大小写?
1               shop1            NULL
2               shop2            category1,category2
3               shop3            category1