SQL Server 中的記錄限制:超越 LIMIT
SQL Server 不支援其他資料庫系統中常用的 LIMIT 函數或 OFFSET 運算子。這在限制檢索到的記錄數量時可能是一個挑戰。
但是,SQL Server 提供了實作類似功能的替代方法。一種方法是結合使用 ROW_NUMBER() 函數和 WHERE 子句:
<code class="language-sql">SELECT * FROM ( SELECT *, ROW_NUMBER() OVER (ORDER BY name) AS row FROM sys.databases ) a WHERE row > 5 AND row <= 10</code>
此子查詢為每一行指派一個行號,然後過濾結果以僅包含指定範圍內的行。
另一個方法是使用 TOP 子句:
<code class="language-sql">SELECT TOP 10 * FROM stuff</code>
雖然 TOP 限制了傳回的行數,但它不提供對起始位置的控制。
為什麼 SQL Server 沒有 LIMIT?
SQL Server 中缺少 LIMIT 函數可能是由於效能方面的考量。使用 LIMIT 可能會導致效能下降,尤其是在大型表中。 SQL Server 優先考慮最佳化查詢執行時間。
使用 OFFSET 和 ROWS
對於 SQL Server 2012 及更高版本,您可以使用 OFFSET 和 ROWS 關鍵字來更精細地控制結果集:
<code class="language-sql">SELECT * FROM sys.databases ORDER BY name OFFSET 5 ROWS FETCH NEXT 5 ROWS ONLY</code>
此查詢跳過前 5 行並檢索接下來的 5 行,提供了與 LIMIT 相當的限制功能。
以上是如何在不使用 LIMIT 的情況下限制 SQL Server 中擷取的記錄數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!