SQL Server CE - ROW_NUMBER

时间:2012-01-02 10:51:25

标签: sql-server-ce

我不知道这段代码有什么问题,它现在给我一天的错误:

select row_number() over(order by s.title) as rowNumber, s.id 
from story as s

表定义:

id       bigint
title    nvarchar(100)
content  ntext

数据库:SQL Server Compact 4.0.8482.1

错误:

  

解析查询时出错。 [令牌行号= 1,令牌行偏移= 22,令牌错误=超过]

我做了什么:

我在这里搜索了同样的问题,但解决方案不适用于我的,我需要row_number功能如此糟糕。

3 个答案:

答案 0 :(得分:6)

正如ErikEJ已经提到的那样 - ROW_NUMBER在SQL Server Compact Edition中根本不存在 - 即使在最新的4.0版本中也不存在。

但是,如果您尝试使用ROW_NUMBER来分页数据,那么SQL Server Compact Edition 4.0也支持通过SQL Server 2012中显示的新关键字进行服务器端分页 - 请参阅{{ 3}}了解所有细节。

您应该能够写出类似的内容:

SELECT (columns)
FROM Story s
ORDER BY Title
OFFSET 20 ROWS 
FETCH NEXT 10 ROWS ONLY;

答案 1 :(得分:3)

SQL Server CE没有row_number。它也不能做标量子查询,也可以用来获取rownumber。

但你可以做不等式连接......计算连接数。

这会给你一个rownumber。

select count(r.id) as Row_Number, s.id 
from story as s
    inner join story as r
        on s.id >= r.id
group by s.id

答案 2 :(得分:2)

SQL Server Compact中没有row_number - 你能使用IDENTITY(不确定你要做什么)?