簡體   English   中英

我可以在SQL Server數據庫上使用LIMIT N,M嗎

[英]Can I use LIMIT N,M on SQL Server database

我有以下SQL語句:

SELECT [id], [name]
FROM [dbo.test_db_002] t1
LEFT JOIN [dbo.test_db_003] t2 ON t1.[id] = t2.[itmid]
ORDER BY t2.[iid] ASC;

這似乎很簡單,但我無法弄清楚。 我需要在其中添加LIMIT N,M來從第N個項目中檢索M個項目,但是我在'limit'單詞周圍一直遇到錯誤。 我試圖將LIMIT子句放在上面的sql語句中的任何地方,但無濟於事。

PS。 我正在寫VS2010附帶的SQL Server。

要回答您的查詢,您可能需要:(取決於您的MN值)

WITH cte AS
(
   SELECT [id], [name], ROW_NUMBER() OVER (ORDER BY t2.[iid] ASC) AS rowNumber
   FROM [dbo.test_db_002] t1
   LEFT JOIN [dbo.test_db_003] t2 ON t1.[id] = t2.[itmid]
)
SELECT [id], [name]
FROM cte
WHERE rowNumber BETWEEN 3 AND 5

需要注意的是,介於兩者之間的值介於BETWEEN N AND N + M

另外,這是一個鏈接,其中包含有關公用表表達式的信息,這是我使用的WITH cte語法。

在SQL Server中沒有與LIMIT N,M直接等效的方法,但是您可以執行以下操作:

SELECT * FROM
  (SELECT *, ROW_NUMBER() OVER (ORDER BY name) as row FROM MyTable) a
WHERE row > 5 and row <= 10

有關更多信息,請參見此處: SQL Server中的“ LIMIT”

您可以使用Row_Number()

例:

select * from 
(
  select cola, colb, row_number() over (order by col1 desc) as row
  from table ) x
where row between value1 and value2

在SQL Server 2012中具有偏移量的限制:

SELECT email FROM myTable
OFFSET 10 ROWS
FETCH NEXT 10 ROWS ONLY;

//偏移量-不。 跳過的行數

// next-不需要 下一行

暫無
暫無

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

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