gpt4 book ai didi

sql - 为什么 F# 中的 orderBy 不会导致 SQL 中的 ORDER BY?

转载 作者:行者123 更新时间:2023-12-04 18:28:41 25 4
gpt4 key购买 nike

我目前正在开展一个使用美国县数据的小项目。我对 Seq.orderBy 中的数据进行排序没有问题,但由于查询表达式中有 sortBy,我希望对结果进行排序。事实并非如此。

type SysData = SqlDataConnection<"Data Source=ROME\SQLEXPRESS;Initial Catalog=SysData;Integrated Security=True">
type County = { State : string; SSA : string }

let counties =
let db = SysData.GetDataContext()
query {
for c in db.CountyMatrix do
sortBy c.Countyssa
select { State = c.State; SSA = c.Countyssa }
distinct
}

现在,上面是我正在执行的,但我的结果最终看起来像这样:

...
{State = "OR";
SSA = "38030";}
{State = "GA";
SSA = "11630";}
{State = "WA";
SSA = "50130";}
{State = "MN";
SSA = "24740";}
{State = "KY";
SSA = "18030";}
{State = "MO";
SSA = "26970";}
{State = "DC";
SSA = "09000";}
...

发送到我的本地 SQL Server 实例的查询在 IntelliTrace 中显示如下:

USE [SysData];

GO

SELECT DISTINCT [t0].[state] AS [Item1], [t0].[countyssa] AS [Item2]
FROM [dbo].[CountyMatrix] AS [t0]

请注意缺少 ORDER BY,由于查询表达式的 sortBy c.Countyssa,我原以为它会在那里。

关于为什么我没有从 counties 中获取排序数据有什么想法吗?我的目标是使它尽可能干净,以作为一个小例子展示给我的雇主。

提前致谢!

最佳答案

关键字的顺序很重要。如果您仔细阅读了说明,那么 SortBy 将对到目前为止已选择的元素进行排序。到目前为止,Distinct 将删除重复项(但其中没有关于保持顺序的任何内容)等。这些关键字中的每一个都作用于它之前的关键字,但请记住,它也可能撤消之前所做的事情(如排序) .

参见 description of each of these keywords here .

for c in db.CountyMatrix do 
let c = { State = c.State; SSA = c.Countyssa }
distinct
sortBy c.SSA
select c

您可能需要使用临时变量来捕获数据类型以便区分和排序它们。

关于sql - 为什么 F# 中的 orderBy 不会导致 SQL 中的 ORDER BY?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28001359/

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