簡體   English   中英

mssql server 2008的分頁查詢在'OFFSET'附近拋出不正確的語法

[英]Pagination query for mssql server 2008 Throwing Incorrect syntax near 'OFFSET'

我正在研究jsp中的分頁(我是編寫sql的新手)。

我做了我的研究,發現了簡單的查詢

分頁在SQL Server 2008如何做分頁在SQL Server 2008

SELECT * FROM document  ORDER BY id OFFSET
                    "+iPageNo+"  ROWS FETCH NEXT 10 ROWS ONLY;

在上面的查詢ipageNo第一次來0(即使我嘗試手動放1)

仍然Incorrect syntax near 'OFFSET'.給出錯誤Incorrect syntax near 'OFFSET'.錯誤Incorrect syntax near 'OFFSET'.

我錯過了什么? 提前致謝。

您將從ORDER BY子句(Transact-SQL)中注意到SQL Server 2008不支持此語法。

您可以從2008年的文檔中看到

**Syntax**

[ ORDER BY 
    {
    order_by_expression 
  [ COLLATE collation_name ] 
  [ ASC | DESC ] 
    } [ ,...n ] 
]

作為2012年文件的地方

**Syntax**
ORDER BY order_by_expression
    [ COLLATE collation_name ] 
    [ ASC | DESC ] 
    [ ,...n ] 
[ <offset_fetch> ]


<offset_fetch> ::=
{ 
    OFFSET { integer_constant | offset_row_count_expression } { ROW | ROWS }
    [
      FETCH { FIRST | NEXT } {integer_constant | fetch_row_count_expression } { ROW | ROWS } ONLY
    ]
}

也許還看看如何在sql server 2008中進行分頁

這是我的工作,現在工作正常。

SELECT * FROM   (SELECT ROW_NUMBER() OVER(ORDER BY id) AS rownumber,*
        FROM document)  as somex  WHERE  rownumber >= (1+1)*10-9
                         AND rownumber <=(1+1)*10

在上面的查詢中,我用(pageNUmber+1)替換(1+1) (pageNUmber+1)

在此輸入圖像描述

如果有任何優雅的方式,請隨時建議我。

我希望會有所幫助(適用於SQL Server 2008)。

DECLARE @Page int
SET @Page = 2
DECLARE @Amount int
SET @Amount = 25
SELECT * FROM (
SELECT ROW_NUMBER() OVER(ORDER BY group_id) AS rownumber, * FROM table_name 
WHERE Column LIKE '%Search_Value%') as somex  
WHERE  rownumber >= (@Page+1)* @Amount-(@Amount - 1) AND rownumber <= (@Page+1) * @Amount

我更進了一步。 添加了一些變量,以便更好地輸入信息。 在我的公司,我們有較舊的數據庫,所以這個飼料幫助了我很多。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM