Sql server ORDERBY子句中表值函数的使用

Sql server ORDERBY子句中表值函数的使用,sql-server,Sql Server,我可以在select查询的order by子句中使用表值函数吗 像这样: declare @ID int set @ID=9011 Exec ('select top 10 * from cs_posts order by ' + (select * from dbo.gettopposter(@ID)) desc) getter(ID)是我的表值函数 请在这方面帮助我。是的。可以像使用普通表一样使用表值函数 尽管有TVF,但您的查询不是有效的SQL 供进一步参考: 您可以将表值函数与联接一起

我可以在select查询的order by子句中使用表值函数吗

像这样:

declare @ID int
set @ID=9011
Exec ('select top 10 * from cs_posts order by ' + (select * from dbo.gettopposter(@ID)) desc)
getter(ID)是我的表值函数


请在这方面帮助我。

是的。可以像使用普通表一样使用表值函数

尽管有TVF,但您的查询不是有效的SQL

供进一步参考:

您可以将表值函数与
联接一起使用。这还允许您选择要排序的列的任意组合:

select  top 10 * 
from    cs_posts p
join    dbo.gettopposter(@ID) as gtp
on      p.poster_id = gtp.poster_id
order by
        gtp.col1
,       gtp.col2

你不能那样做-它怎么知道点什么菜?它不知道TVF与原始查询的关系。但是,您可以将这两个链接(因为我假设cs_posts有一个与TVF相关的id列),然后按TVF id列排序。

您正在尝试将select的结果连接到字符串?那怎么行?你试过你的代码了吗?如果有任何
错误
。如果select*返回多个结果,它将不起作用。Rakesh,你能描述一下你查询的目的吗?我发现这个错误“getter”附近的语法不正确”。