的SQL Server CE - ROW_NUMBER
我不知道什么是错的这个代码,它给我的错误,现在一天:的SQL Server CE - ROW_NUMBER
select row_number() over(order by s.title) as rowNumber, s.id
from story as s
表定义:
id bigint
title nvarchar(100)
content ntext
数据库:SQL服务器紧凑型4.0.8482.1
错误:
There was an error parsing the query. [ Token line number = 1,Token line offset = 22,Token in error = over ]
我是怎么回事:
我已经在SO搜索了相同的问题,但解决方案不适用于我的,我需要row_number
函数如此糟糕。
正如ErikEJ已经提到的 - ROW_NUMBER
根本不存在于SQL Server Compact Edition中 - 甚至不在最新的4.0版本中。但是,如果您尝试使用ROW_NUMBER
来分页数据,则SQL Server Compact Edition 4.0不支持通过将在SQL Server 2012中显示的新关键字进行服务器端分页 - 有关所有详细信息,请参阅this blog post here 。
你应该能够写类似:
SELECT (columns)
FROM Story s
ORDER BY Title
OFFSET 20 ROWS
FETCH NEXT 10 ROWS ONLY;
在SQL Server Compact中没有row_number - 你可以使用IDENTITY(不知道你在做什么)?
先生,我试图创建分页,但得到一个错误,在调试时我遇到了这个部分的查询,好像它是问题,所以我试图做一个测试。我会尝试marc_s的解决方案。 – dpp 2012-01-03 02:31:30
的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
棒极了。你是怎么来到这个解决方案@guymella的?我无法跟随关于不平等加入的推理 – kuklei 2018-02-17 17:10:18
你说得对,我正在尝试创建分页...我尝试了offset-fetch,但是昨天我得到了一个错误,所以我认为它不起作用。我会再试一次,马上通知你。 – dpp 2012-01-03 02:30:01
它的工作原理!我用这个'offset @ 0 rows fetch next @ 1 rows only'而不是我原来的查询'offset(@ 0-1)* @ 1 rows fetch next @ 1 rows only',我在我的应用程序中计算了“@ 0”。在SQL CE中,计算似乎不被允许,是吗? SQL CE是否将'(@ 0-1)* @ 1'视为子查询? – dpp 2012-01-03 02:54:10