簡體   English   中英

MySQL左連接右側多行,如何將左側的每一行合並為一行(我想要從右側表中連接的字段)?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM