我有一本书系列表(bs),其中包含基本的系列信息。 然后我有一本书系列照片表(bsp),它根据bs id保存每个bs的缩略图。 bs只能有一个缩略图,所以bsp表得到一个 插入每个照片更新,当需要显示时,它从该表中获取最大ID。我现在需要获得每张bs和最大id照片。我的查询返回所有正确的行,但它不限于每bs 1,它返回每个bs / bsp组合。这是查询:
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行,其中有4个照片更新,第2个系列中有2个有2个照片更新。我希望它返回每个系列的最大照片ID,所以它应该只返回2行。我怎样才能做到这一点?
答案 0 :(得分: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