我想在此查詢中使用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