Вы не указываете , который из тех 50 изображений, которые вы хотите получить, - но что-то в этом роде будет работать: вы можете использовать CTE (Common Table Expression) с функцией ROW_NUMBER
:
;WITH OneImagePerMonument AS
(
SELECT
m.Monument_ID, m.MonumentName, p.Photo_Id, p.URL,
ROW_NUMBER() OVER(PARTITION BY m.Monument_ID ORDER BY Photo_Id DESC) AS 'RowNum')
FROM dbo.Monument m
INNER JOIN dbo.Photos p ON m.Monument_Id = p.Monument_Id
)
SELECT
Monument_ID, MonumentName, Photo_Id, URL
FROM OneImagePerMonument
WHERE RowNum = 1
Этот CTE «разбивает» ваши данные на Monument_Id
, и для каждого раздела функция ROW_NUMBER
выдает последовательные числа, начиная с 1 и упорядочивая по Photo_Id DESC
- так что последняя строка получает RowNum = 1
(для каждый UserID
), который я выбираю из CTE в операторе SELECT после него.