SQL CE:限制查询中返回的行

时间:2009-12-17 20:00:30

标签: sql sql-server compact-framework sql-server-ce

SQL Compact Edition 3.5 中,请注意它是我所说的精简版 - 有没有办法将行数限制为仅2?像使用LIMIT或TOP的东西。我真的不希望使用SqlCEDataReader或SqlCEResultSet。我想在查询中执行所有限制 。这可能吗?我环顾四周,似乎不是这样。

编辑 -

为了回应Dave Swersky的数据请求并在某些列上使用Min()/ Max()作为获得前2行的方法,这里有一些样本(已消毒的)数据:

Line     Site          Function     Status
1010     Las Vegas     new          4
1020     DC            send         1
1030     Portland      copy         1
1040     SF            copy         1
1050     Portland      copy         1
1060     DC            send         1

*列数多于此,但这些是重要的列。

很抱歉缺乏直观的数据(但实际数据更不直观!),但为了安全起见,我需要更改数据。

所以我需要确定:记录在前一行的哪个站点,以确定需要在哪个站点获取。

任何指定行上的网站 第一行 function ='new'对应项目的位置接下来就是这样。所以简单地从同一条线上抓住那个网站就不会告诉我它来自哪里。状态将始终为1或4. 4对应于已经交付的位置,因此我不希望在结果中包含这些记录。但它可能有助于获取取件网站。

对于这个数据表,我希望查询返回对应于第一行上方的行的状态为1的站点。所以 - 这就是拉斯维加斯。

4 个答案:

答案 0 :(得分:5)

答案 1 :(得分:1)

这取决于您的数据...如果您有保证顺序ID或日期,则可以使用MAX和NOT IN子查询返回有限数量的行。发布你的一些架构,我会尝试做一个例子。

答案 2 :(得分:1)

根据您的需要,您可以使用DataReader执行完整查询,并且只能将其称为.Read()方法两次。

答案 3 :(得分:1)

我从未在查询中找到答案。 这是针对移动应用程序还是桌面上的SQL CE?

我对你没有直接的答案,但会分享我在自己的项目中所观察到的...... 我在桌面应用程序中使用SQL CE的经验是,在某些情况下,使用应用程序代码进行过滤会更有效。因此,如果您发现自己编写了一个复杂的查询,您可能还希望在数据reader.Read()循环中的应用程序代码中编写过滤器并比较结果。我发现这种切割操作花了几秒钟到亚秒的情况。

我知道这不是你想要做的,但我发现SQL CE要求你优化的东西与你在服务器上运行时有所不同。无需担心网络延迟,因此不会出现正常的担忧。