使用 SQL Server 2005 / 2008 我有一个表BB_MEDIAOBJECT (Id, ...)
,其中包括其他几个数据字段mediaobjects
,BB_COLLECTION (Id, Name, Description)
其中定义了大约 30 个集合的表,以及一个表BB_MEDIAOBJECT_COLLECTION (MediaObjectId, CollectionId)
,其中列出了每个集合中的所有项目。
请帮助我定义一个 SQL 查询,mediaobjects
为每个集合提供前 10 个查询。
根据 Marc 提供的答案,我得到了以下最终结果,其中查询现在正确显示了 10 个最近修改的项目:
;WITH PartitionedComponents AS
(
SELECT
CollectionID = c.ID,
c.Name,
c.Description,
MediaObjectId = m.ID,
ROW_NUMBER() OVER(PARTITION BY c.ID ORDER BY m.modifiedby DESC) AS 'RowNum'
FROM
dbo.BEELDBANK_COLLECTION c
INNER JOIN
dbo.BEELDBANK_MEDIAOBJECT_COLLECTION mc ON mc.CollectionId = c.ID
INNER JOIN
dbo.BEELDBANK_MEDIAOBJECT m ON mc.MediaObjectId = m.Id
)
SELECT
CollectionID,
Name,
Description,
MediaObjectId
FROM
PartitionedComponents
WHERE
RowNum <= 10