我想在此查询中使用Row_Number()方法实现分页,但没有运气。在T-SQL中寻呼
以下查询使用递归方式获取一组类别的站点。
WITH hierarchy AS (
SELECT yt.id
FROM [dbo].[TH_Categories] yt
WHERE yt.ID = @topicID And CultureID = @cultureID
UNION ALL
SELECT yt.id
FROM [dbo].[TH_Categories] yt
JOIN hierarchy h ON h.ID = yt.ParentCategoryID)
Select id, [SiteName]
,[SiteURL]
,[Description]
,[Logo]
,[CultureID]
,[DateAdded], dbo.GetSiteFollowers(id) AS Followers from dbo.TH_Sites where id in (
Select Distinct SiteID from dbo.TH_CategoryFeeds Where CatID in (
SELECT ID
FROM hierarchy t ))
此查询返回一组类别的所有网站。我试图整合ROW_NUMBER()的dbo.TH_Sites表,所以我可以使用
Where RowNumber BETWEEN @rowStart AND @rowEnd
得到的每个请求记录X号,但我不断收到T-SQL的错误。
任何提示球员,谢谢。
我想这一点:
WITH hierarchy AS (
SELECT yt.id
FROM [dbo].[TH_Categories] yt
WHERE yt.ID = @topicID And CultureID = @cultureID
UNION ALL
SELECT yt.id
FROM [dbo].[TH_Categories] yt
JOIN hierarchy h ON h.ID = yt.ParentCategoryID)
Select id, [SiteName]
,[SiteURL]
,[Description]
,[Logo]
,[CultureID]
,[DateAdded], ROW_NUMBER() OVER (order by [DateAdded] DESC) AS 'RowNumber' , dbo.GetSiteFollowers(id) AS Followers from dbo.TH_Sites where RowNumber = 5 AND id in (
Select Distinct SiteID from dbo.TH_CategoryFeeds Where CatID in (
SELECT ID
FROM hierarchy t))
但我正在逐渐ROWNUMBER是不是一个有效的列
这里是另一种实现方式:
WITH hierarchy AS (
SELECT yt.id
FROM [dbo].[TH_Categories] yt
WHERE yt.ID = @topicID而CultureID = @cultureID UNION ALL SELECT yt.id
FROM [dbo].[TH_Categories] yt
JOIN hierarchy h ON h.ID = yt.ParentCategoryID)
WITH numbered_hierarchy AS (
Select id, [SiteName]
,[SiteURL]
,[Description]
,[Logo]
,[CultureID]
,[DateAdded] , ROW_NUMBER() OVER (order by [DateAdded] DESC) AS 'RowNumber', dbo.GetSiteFollowers(id) AS Followers from dbo.TH_Sites where id in (
选择从鲜明dbo.TH_CategoryFeeds凡SITEID在CATID( SELECT ID FROM层次吨)))
SELECT id
, [SiteName]
, [SiteURL]
, [Description]
, [Logo]
, [CultureID]
, [DateAdded]
, RowNumber
, Followers
FROM numbered_hierarchy
WHERE RowNumber BETWEEN 1 AND 5
“但我不断收到T-SQL的错误” 请张贴?这通常是最可爱的部分。 :) – 2010-08-31 15:33:09
当我箍起来ROW_NUMBER()OVER(按[DateAdded] DESC排序)作为'RowNumber'作为dbo.TH_Sites的附加列,并添加RowNumber在1和5之间到'where dbo.TH_Sites id in ...' 我得到的RowNumber不是一个有效的列。 – 2010-08-31 15:39:04
你可以把这个SQL在你的问题? – 2010-08-31 15:46:57