在 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的站点。所以 - 这就是拉斯维加斯。
答案 0 :(得分:5)
Sql CE 3.5支持TOP表达式: http://technet.microsoft.com/en-us/library/bb686896.aspx
答案 1 :(得分:1)
这取决于您的数据...如果您有保证顺序ID或日期,则可以使用MAX和NOT IN子查询返回有限数量的行。发布你的一些架构,我会尝试做一个例子。
答案 2 :(得分:1)
根据您的需要,您可以使用DataReader执行完整查询,并且只能将其称为.Read()
方法两次。
答案 3 :(得分:1)
我从未在查询中找到答案。 这是针对移动应用程序还是桌面上的SQL CE?
我对你没有直接的答案,但会分享我在自己的项目中所观察到的...... 我在桌面应用程序中使用SQL CE的经验是,在某些情况下,使用应用程序代码进行过滤会更有效。因此,如果您发现自己编写了一个复杂的查询,您可能还希望在数据reader.Read()循环中的应用程序代码中编写过滤器并比较结果。我发现这种切割操作花了几秒钟到亚秒的情况。
我知道这不是你想要做的,但我发现SQL CE要求你优化的东西与你在服务器上运行时有所不同。无需担心网络延迟,因此不会出现正常的担忧。