1. 程式人生 > >left join 右表多條數據重復

left join 右表多條數據重復

www. 幽默 lin 零基礎 wid 常見 overflow 易懂 border

mysql的left join從兩個表中聯合查詢數據,以左表為主,右表為輔。如果左表中有的內容右表中沒有,則用null填充。這是一般的常見的解釋。也很容易理解。但是在做右表的多數據查詢的時候就得寫條件了。

我寫一個產品-產品圖片的分頁過程中需要查出一個圖片即可。但是在用mysql的left join中,左表為product,鍵為pid。右表為image主鍵為imageid,外鍵為pid。
查詢語句入下

select product.* from product left join image using(pid);
當輸出結果時發現,當一個產品數據對多個圖片數據時,產品會出現重復。這就是遇到的麻煩,查詢網絡上有人有這樣的問題,

但是都是通過分步來解決,即查詢完畢產品數據,然後循環的時候再進行圖片查詢並查詢1個輸出。

我想了半天,采用了另一種方法解決,left join 右表多條數據的情況,根據上面的我寫了如下sql語句
select product.*,foraspcn.image from product left join(select imagename,pid from image group by pid) as foraspcn

using(pid);
這樣查詢出來就是一個產品對應一個圖片

即,在查詢右連接的表時,查詢的就是1條數據,通過groupby 來進行數據檢索。當然這樣的group by 是說不準查出那條來的。

我就是這樣解決的。

再分享一下我老師大神的人工智能教程吧。零基礎!通俗易懂!風趣幽默!希望你也加入到我們人工智能的隊伍中來!https://www.cnblogs.com/captainbed

left join 右表多條數據重復