加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

“OFFSET”附近的语法不正确“modift sql comm 2012至2008

发布时间:2020-12-12 16:31:24 所属栏目:MsSql教程 来源:网络整理
导读:我列出了这个问题 SELECT q.qTitle,q.qDescription,q.qCreatedOn,u.uCode,u.uFullname,qcat.qcatTitle,q.qId,q.qStatus FROM tblQuestion AS q INNER JOIN tblUser AS u ON q.uId = u.uId INNER JOIN tblQuestionCategory AS qcat ON q.qcatId = qcat.qcatId
我列出了这个问题
SELECT q.qTitle,q.qDescription,q.qCreatedOn,u.uCode,u.uFullname,qcat.qcatTitle,q.qId,q.qStatus 
FROM tblQuestion AS q INNER JOIN tblUser AS u 
ON q.uId = u.uId INNER JOIN tblQuestionCategory AS qcat 
ON q.qcatId = qcat.qcatId 
WHERE (q.qStatus = 1) 
ORDER BY q.qCreatedOn DESC 
OFFSET @page*10 ROWS FETCH NEXT 10 ROWS ONLY

但是在我的服务器上有一个问题,

Incorrect syntax near 'OFFSET'.
Invalid usage of the option NEXT in the FETCH statement.

如何修改sql server 2008的查询?

还有一个问题.如何编写列表页面的存储过程?这是我的代码http://codepaste.net/gq5n6c

答:http://codepaste.net/jjrkqr

解决方法

在注释中发现,错误的原因是因为SQL Server 2008不支持它.您可以尝试根据SQL Server 2012更改查询.

这样的:

SELECT column1
FROM   (
          SELECT column1,ROW_NUMBER() OVER (ORDER BY column_id) AS x
          FROM   mytable
       ) AS tbl
WHERE  tbl.x BETWEEN 20 AND 30

在你的代码中:

SELECT * FROM  
(SELECT ROW_NUMBER() OVER(ORDER BY q.qId) AS rownumber 
FROM tblQuestion AS q 
INNER JOIN tblUser AS u ON q.uId = u.uId 
INNER JOIN tblQuestionCategory AS qcat ON q.qcatId = qcat.qcatId ) as somex 
WHERE  somex.rownumber  BETWEEN 11 AND 20

问题是因为你没有定义@page.

尝试这个(因为你没有提到什么是@page,我把它当作一些常数,或者你可以声明它,然后设置它的值):

declare @page int
set @page = 5  // You may set any value here.

SELECT q.qTitle,q.qStatus 
FROM tblQuestion AS q 
INNER JOIN tblUser AS u ON q.uId = u.uId 
INNER JOIN tblQuestionCategory AS qcat ON q.qcatId = qcat.qcatId 
WHERE (q.qStatus = 1) 
ORDER BY q.qCreatedOn DESC 
OFFSET (@page*10) ROWS
FETCH NEXT 10 ROWS ONLY

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读