回答
如果你使用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:将行数据精确翻转到列
- 5. SQL server 2005数字精确损失
- 6. SQL Getdate的精确度?
- 7. 的LINQ to SQL - 精确查询值
- 8. SQL精确匹配列中的单词
- 9. SQL Server精确表移调
- 10. SQL SELECT显示行的数据作为
- 11. Sql Select - 返回的总行数
- 12. 什么是正确的查找精确匹配的sql命令?
- 13. PHP:rowCount()现在精确计数?
- 14. IIS和/或SQL的精确跟踪
- 15. 获取精确匹配与LIKE - SQL/PHP
- 16. C中的精确数字?
- 17. ORA-01422 - 精确读取返回的行数多于请求行数
- 18. 在java中保留精确到小数位的精确度
- 19. 生成LinqtoSql Sql 5x慢于同一个精确的手写sql
- 20. 用于精确预测的数据集中的最小行数
- 21. 精确的Javascript
- 22. 01422. 00000 - “精确获取回报超过行的请求数量”
- 23. MySQL:Datefield的精确度
- 24. SQL查询查找精确匹配
- 25. Sql服务器 - 精确处理
- 26. SQL CONTAINSTABLE返回精确匹配
- 27. SQL Server避免精确度丢失
- 28. 如何在Zend Framework中执行之前打印精确的sql查询2
- 29. SQL SELECT *只返回一行
- 30. SQL - SELECT行有条件
是的,这是可能的。我会告诉你究竟如何接受你之前的问题的答案。 – 2010-09-03 12:37:53
什么SQL语言?还有什么目的?如果您这样做是因为您正在显示多页面查看结果的子集? – greektreat 2010-09-03 12:38:41