2014-01-09 57 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非常欢迎... –