我有两个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
但是这只会返回包含每个产品concat
的所有条形码的一行,如何为每个产品条形码获取一行?
我宁愿不必将其拆分,但如果没有join
的解决方案,那么请告诉我。
答案 0 :(得分:26)
您需要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;
如果没有group by
,MySQL会将整个查询解释为聚合查询,以汇总所有数据(因为存在group_concat()
聚合函数)。因此它只返回一行,总结所有数据。