[英]MySQL JOIN Query - one row from right table for each row left table with prioritizing contained data
[英]MySQL left join with multiple rows on right, how to combine to one row for each on left (with the field I want from the right table concated)?
我有兩個 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
沒有解決方案,請告訴我。
你需要一個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()
,一個聚合函數)。 因此它只返回一行,匯總了所有數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.