gpt4 book ai didi

sql - SQL 表值函数中的排序依据

转载 作者:行者123 更新时间:2023-12-02 23:01:46 25 4
gpt4 key购买 nike

我在几个不同的网站上读到过有关此问题的信息,但我仍然不明白解决方案。据我了解,SQL会优化函数中的查询,有时Order By子句会被忽略。如何对结果进行排序?

如何在像这样的简单表值函数中对结果进行排序?

Create function [dbo].fTest

--Input Parameters
(@competitionID int)

--Returns a table
RETURNS @table TABLE (CompetitionID int )

as

BEGIN
Insert Into @table (CompetitionID)
select CompetitionID from Competition order by CompetitionID desc
RETURN
END

更新

我发现插入主键身份字段似乎有帮助(如马丁·史密斯发布的答案中所述)。这是一个好的解决方案吗?

--Returns a table
RETURNS @table TABLE
(
SortID int IDENTITY(1,1) PRIMARY KEY,
CompetitionID int
)

引用下面马丁的回答,在我的情况下,在 select 语句之外进行排序并不容易。我发布的示例是一个精简版本,但我的现实生活问题涉及更复杂的按案例排序子句进行自定义排序。除此之外,我在 MVC Controller 中使用 LINQ 查询调用此函数,这意味着必须将自定义排序添加到 LINQ 查询中。目前这超出了我的能力范围。

如果添加身份字段是一个安全的解决方案,我很乐意这样做。简单又容易。

最佳答案

order by 需要位于从函数中进行选择的语句中。

SELECT CompetitionId
FROM [dbo].fTest()
ORDER BY CompetitionId

这是获得可靠结果的唯一方法,并保证 not suddenly break in the future .

关于sql - SQL 表值函数中的排序依据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31496306/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com