回答
如果你使用MySQL中,你可以使用例如limit命令:
SELECT * FROM TableName LIMIT 235, 15
其中第一個數字是開始索引,第二個是行數回來。
我真的很傻,還是> = 235,<= 250仍然意味着16行,而不是15? – 2010-09-03 13:48:17
16行不是嗎?因爲它包含了兩個邊界 – Malachi 2010-09-03 15:39:19
我不知道一般的方法..但每個DB都有一個方法。例如在Oracle中,你可以用一個嵌套的選擇
甲骨文這樣做:
select * from (
select a, b, c from table_foo
where id = 124
)
WHERE rownum >= 235
and ROWNUM <= 250
MSSQL
select * from
(select Row_Number() over
(order by userID) as RowIndex, * from users) as Sub
Where Sub.RowIndex >= 235 and Sub.RowIndex <= 250
MySQL的
SELECT * FROM TableName LIMIT 235, 15
謝謝大家..得到了答案 – user414977 2010-09-03 12:49:04
我是不是很傻,還是> = 235和<= 250仍然意味着16行,而不是15? – 2010-09-03 13:47:49
我的數學可能在邊界情況下是錯誤的:) – bwawok 2010-09-03 14:43:53
不,該數據庫設置不是一個序列,這意味着你沒有任何特定的順序。
但是當指定順序比一切都簡單的多。
甲骨文
SELECT * FROM (SELECT * FROM TABLE ORDER BY COLUMN) WHERE rownum BETWEEN 235 and 250
在這種情況下,你必須使用的rownum
ROWNUM是一個僞列。它在結果集中記錄了 記錄。第一個 記錄符合在選擇語句中的哪裏標準 被給出 rownum = 1,並且每個後續記錄 滿足相同標準增加 rownum。
MS SQL
WITH OrderedRecords AS
(
SELECT ColumnA,
ROW_NUMBER() OVER (ORDER BY ColumnA) AS 'RowNumber'
FROM Sales.SalesOrderHeader
)
SELECT * FROM OrderedRecords WHERE RowNumber BETWEEN 235 and 250
GO
對於這一點,你必須指定你自己的訂單列
對於MySQL我不知道該怎麼引擎處理這個。
你認爲按條款訂購的產品有什麼作用? – bwawok 2010-09-03 12:42:08
主要指定訂單,但您可能會參考它的工作原理;它依賴於數據庫引擎,但通常我們可以說返回和遊標以特定的順序檢索數據,爲什麼在oracle中我們必須使用另一個選擇,而在MS SQL中,我們需要爲我們贏得一行第一套。這總是被數據庫使用(爲什麼我們可以使用別名)。 – 2010-09-03 12:53:19
如果你使用的是Microsoft SQL(2005>),您可以使用ROW_NUMBER函數
USE AdventureWorks;
GO
WITH OrderedOrders AS
(
SELECT SalesOrderID, OrderDate,
ROW_NUMBER() OVER (ORDER BY OrderDate) AS 'RowNumber'
FROM Sales.SalesOrderHeader
)
SELECT *
FROM OrderedOrders
WHERE RowNumber BETWEEN 50 AND 60;
這可以在SQL Server 2012中很容易做到通過使用OFFSET
和FETCH
的新功能。這將幫助您在已排序/排序的結果集中提取所需的行。
請看下面的例子:
SELECT
PP.FirstName + ' ' + PP.LastName AS 'Name'
,PA.City
,PA.PostalCode
FROM Person.Address PA
INNER JOIN
Person.BusinessEntityAddress PBEA
ON PA.AddressID = PBEA.AddressID
INNER JOIN
Person.Person PP
ON PBEA.BusinessEntityID = PP.BusinessEntityID
ORDER BY PP.FirstName
OFFSET 0 ROWS
FETCH NEXT 5 ROWS ONLY
請注意上面寫的OFFSET 0 and FETCH NEXT 5
。
這將顯示從0行開始只有5行。
我們可以在PostgreSQL中做同樣的事嗎? – Zoran777 2017-07-27 08:07:25
繼起我曾在甲骨文
select * from (select rownum serial,sp.* from sample_table st) sam
where sam.serial > 10 and sam.serial <= 20;
- 1. Oracle SQL Select中的行數?
- 2. SQL Server精確度瘋狂
- 3. 從Linq到SQL精確讀取一行
- 4. SQL server 2005數字精確損失
- 5. SQL:將行數據精確翻轉到列
- 6. SQL Getdate的精確度?
- 7. mysql select select返回的不精確匹配
- 8. 的LINQ to SQL - 精確查詢值
- 9. SQL SELECT WHERE僅確切數組值
- 10. SQL精確匹配列中的單詞
- 11. SQL Server精確表移調
- 12. 小數精確
- 13. DH_free精確行爲
- 14. SQL select返回定義的行數
- 15. SQL SELECT顯示行的數據作爲
- 16. Sql Select - 返回的總行數
- 17. 什麼是正確的查找精確匹配的sql命令?
- 18. PHP:rowCount()現在精確計數?
- 19. 精確Reduce函數
- 20. SQL從第n行的雙精度數據中選擇數據
- 21. IIS和/或SQL的精確跟蹤
- 22. 獲取精確匹配與LIKE - SQL/PHP
- 23. C中的精確數字?
- 24. 如何查看運行SQL語句的精確時間?
- 25. SQL僅選擇存在精確多重關係的行
- 26. SQL SELECT查詢:「不明確的列名」
- 27. 是t-sql確定性中的select *嗎?
- 28. ORA-01422:精確提取返回的請求數量超過請求的行數
- 29. 生成LinqtoSql Sql 5x慢於同一個精確的手寫sql
- 30. ORA-01422 - 精確讀取返回的行數多於請求行數
是的,這是可能的。我會告訴你究竟如何接受你之前的問題的答案。 – 2010-09-03 12:37:53
什麼SQL語言?還有什麼目的?如果您這樣做是因爲您正在顯示多頁面查看結果的子集? – greektreat 2010-09-03 12:38:41