我有两个桌子古迹和照片
纪念碑台
Monument_Id int
MonumentName nvarchar
照片表
Photo_Id int
Monument_Id整型
URL nvarchar
在一些纪念碑中有50多幅图片,有些是空的。我只想显示每个纪念碑的一个图像,而忽略没有图像的纪念碑。
我尽力了,但没能成功。
问好谢谢
发布于 2011-10-14 20:58:25
您没有指定您希望拥有的最多50幅图像中的,但是类似于这些内容的内容将有效:您可以在ROW_NUMBER函数中使用CTE (公共表表达式):
;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),这就是我在select语句之后从RowNum = 1中选择的。
https://stackoverflow.com/questions/7773439
复制相似问题