MySQL左边连接多行,如何在左边的每一行中合并为一行(我希望从右表中的字段合并)?

Joh*_* V. 18 php mysql

我有两个MySQL表,产品和条形码.一个产品可能有多个条形码,这就是为什么我把它分成它自己的表.

这是我尝试过的(使用CodeIgnighter的Active Record,但我在这里写出了查询,这意味着如果有拼写错误,它可能不在我的实际查询中):

SELECT
    products.id,
    products.snipe_price,
    group_concat(barcodes.barcode) as barcodes
FROM products
LEFT JOIN barcodes on barcodes.product_id = products.id
Run Code Online (Sandbox Code Playgroud)

但是这只返回一行,其中包含每个产品concat编辑的所有条形码,如何使用产品条形码为每个产品获得一行?

我宁愿不必拆分它,但如果没有解决方案join那么请告诉我.

Gor*_*off 35

你需要一个group by:

SELECT products.id, products.snipe_price, group_concat(barcodes.barcode) as barcodes
FROM products LEFT JOIN
     barcodes
     on barcodes.product_id = products.id
group by products.id;
Run Code Online (Sandbox Code Playgroud)

如果没有group by,MySQL会将整个查询解释为聚合查询,以汇总所有数据(因为存在group_concat()聚合函数).因此,它只返回一行,汇总所有数据.

  • @eyal_katz...如果您有疑问,则应将其视为问题而非评论. (3认同)