我有一个图书系列表(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个照片更新。我希望它返回每个系列的最大照片ID,因此它应该仅返回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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句