如何在表中有30条记录的情况下创建SQL查询,并且我想从12到20中选择行,其中12和20是行数字,而不是ID?如何使SQL查询从表中获取某些特定范围的行
IDs Code
5 ABC
6 SDF
8 WSA
10 FSD
15 IOP
.
.
.
.
80 AWS
如何在表中有30条记录的情况下创建SQL查询,并且我想从12到20中选择行,其中12和20是行数字,而不是ID?如何使SQL查询从表中获取某些特定范围的行
IDs Code
5 ABC
6 SDF
8 WSA
10 FSD
15 IOP
.
.
.
.
80 AWS
如果您使用的是MS SQL Server,那么row_number()函数可用。
例子:
USE AdventureWorks2008R2;
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环境是您使用?答案将取决于环境。
另外,如何订购记录?它们是以某种方式排序的,还是你希望它们按照自然顺序排列?
看你的例子,假设你的ID列是你希望他们排序顺序,您可以使用这样的查询MS SQL Server的
select
top (20-12) ids, code
from
[yourtable]
where
ids in (SELECT TOP 20 id from stoplists order by id)
order by
ID desc
例如抓住你想要的第一个X记录,然后从结果集中抓取你想要的记录。
您可以使用稍微不同的语法在其他SQL语法中实现相同的功能。
这取决于你的DBMS。 ROW_NUMBER()是一种非常规的方式。但它不是非常快速和方便。 您可以使用特殊的SQL命令。
对于MSSQL SERVER。 SELECT TOP(5)...
对于MySQL。 SELECT * FROM table LIMIT 0,30(0是开始位置,30是行计数)。
对于火鸟。选择第一个10 ...等。
使用http://en.wikipedia.org/wiki/Select_(SQL)#ROW_NUMBER.28.29_window_function,非标准语法。
并且只获得第50和60行?你需要在SQL Server中嵌套2个'TOP'语句,我可以向你保证'ROW_NUMBER()'比这个更快。它也是**标准的SQL(我不知道哪个版本)。这是非标准的'极限','TOP'等。 – 2010-08-11 09:41:28
+1对于AdventureWorks – 2010-06-14 12:29:46