2014-01-09 58 views
2

我有一個包含基本系列信息的書系列表(bs)。 然後我有一本書系列照片表(bsp),它基於bs id保存每個bs的縮略圖。 bs只能有一個縮略圖,所以bsp表爲每個照片更新獲取一個 插入,並且當它需要顯示時,它會從該表中獲取最大ID。我現在需要爲它獲取每個bs和最大ID照片。我的查詢返回所有正確的行,但它不限於每個bs,它返回每個bs/bsp組合。下面是查詢:Mysql左連接,根據左表獲取所有右表列和左列表中的2列最大編號

select bs.*, bsp.Id AS BookSeriesPhotoId, bsp.Ext AS BookSeriesPhotoExt 
FROM BookSeries AS bs 
LEFT JOIN BookSeriesPhotos bsp ON bsp.BookSeriesId = bs.Id 
WHERE(
    SELECT MAX(Id) FROM BookSeriesPhotos GROUP BY bsp.Id 
) 

這返回6行,4從第一系列其具有用於第二系列其中有2個圖片動態4個相片更新和2。我希望它能夠返回每個系列的最大照片ID,所以它應該只返回2行。我怎樣才能做到這一點?

回答

2

試試這個:

SELECT bs.*, bsp.Id AS BookSeriesPhotoId, bsp.Ext AS BookSeriesPhotoExt 
FROM BookSeries AS bs 
LEFT JOIN (SELECT bsp.BookSeriesId, bsp.Id, bsp.Ext 
      FROM BookSeriesPhotos bsp 
      INNER JOIN (SELECT bsp.BookSeriesId, MAX(bsp.Id) ID 
         FROM BookSeriesPhotos bsp GROUP BY bsp.BookSeriesId 
        ) AS A ON bsp.BookSeriesId = A.BookSeriesId AND bsp.Id = A.Id 
     ) AS bsp ON bsp.BookSeriesId = bs.Id 
+0

你釘它,感謝Saharsh! – Naterade

+0

@Naterade非常歡迎... –