我正在从每个用户DESC的关注者数量排序的数据库中检索所有用户
with TH_Users as
(
SELECT [ID]
,[FullName]
,[UserName]
,[ImageName]
,dbo.GetUserFollowers(ID) AS Followers
, ROW_NUMBER() OVER (order by ID ) AS 'RowNumber'
from dbo.TH_Users
Where CultureID = @cultureID
)
Select ID,[FullName]
,[UserName]
,[ImageName], Followers from TH_Users
Where RowNumber BETWEEN @startIdx AND @endIdx
Order BY Followers DESC
我正在使用一个函数来获取每个用户的关注者数量。现在是我的用户关注者列作为ROW_NUMBER()的列顺序OVER(按照订单排序)AS'RowNumber'
我收到编译错误。
在查询结束时放置订单BY关注者DESC将不会给出预期的结果。
有什么建议吗?
由于
答案 0 :(得分:0)
当您使用AS
为列提供别名时,该别名在查询中不可用 - 逻辑上,将别名应用于列(几乎)是最后一部分评估查询。
因此,如果您希望CTE ROW_NUMBER
OVER
的别名为Followers
,则必须使用与列本身相同的术语表达它:
;with TH_Users as
(
SELECT [ID]
,[FullName]
,[UserName]
,[ImageName]
,dbo.GetUserFollowers(ID) AS Followers
, ROW_NUMBER() OVER (order by dbo.GetUserFollowers(ID) ) AS 'RowNumber'
from dbo.TH_Users
Where CultureID = @cultureID
)
请注意,不会导致对该函数的评估次数超过当前时间。
(我没有测试过这个)