SqlServer 实现rownum 的功能::
SQL Server 的语法:
SELECT TOP number|percent column_name(s) FROM table_name
方法1:
with temp as
( select row_number() over(order by cityID) as rownum,cityNamefrom city )
select * from temp where rownum between 10 and 20
go
解释:
1 此方法把括号里的查询结果放到变量:temp 里面( 我也不确定是不是变量), 并用row_number()函数进行一个行号跟踪, 再用over 函数进行一个列的排序规则( 是这必须的), 并指定列名为'rownum'
2 紧接着在下面的语句可以对 'rownum' 进行一个指定行号的查询
3 此批语句执行完毕后, 变量:temp 释放
方法2:
select identity(int,1,1) as rownum, cityName into #temp fromcity
select * from #temp where rownum between 10 and 20
go
解释:
此方法跟上面的差不多的意思, 只不过把 row_number() 函数换成了 identity() 函数
并把结果集放在一个临时表里面, 当批语句执行完毕, 此临时表还可以使用
---------------------------------------
如何让SELECT 查询结果额外增加自动递增序号_SQL技巧
如果数据表本身并不内含自动地增编号的字段时,要怎么做才能够让SELECT查询结果如图表1所示,额外增加自动递增序号呢?我们提供下列五种方法供您参考:
USE北风贸易;
GO
软件开发网
SELECT序号= (SELECT COUNT(客户编号) FROM 客户 AS LiMing
WHERE LiMing.客户编号<= Chang.客户编号),
客户编号,公司名称
FROM客户 AS Chang ORDER BY 1;
GO
SELECT RANK() OVER (ORDER BY 客户编号 DESC) AS 序号,
客户编号,公司名称
FROM客户;
GO
SELECT序号= COUNT(*), LiMing.客户编号, LiMing.公司名称
FROM 客户 AS LiMing, 客户AS Chang
WHERE LiMing.客户编号>= Chang.客户编号
GROUP BY LiMing.客户编号, LiMing.公司名称
ORDER BY 序号;
GO
SELECT序号= IDENTITY(INT,1,1),管道,程序语言,讲师,资历
INTO #LiMing
FROM问券调查一;
GO
SELECT * FROM #LiMing;
GO
DROP TABLE #LiMing;
GO
WITH排序后的图书 AS
(SELECT ROW_NUMBER() OVER (ORDER BY 客户编号 DESC) AS 序号,
客户编号,公司名称
FROM 客户)
SELECT * FROM 排序后的图书
WHERE序号 BETWEEN 2 AND 4;
GO
------------------------------
例如:
在ORACLE中:
"select
"SELECT
增加序号字段
但在SQL
释:
1.--rownum在oracle里面就是物理顺序,那么
在sqlserver就直接select
2.--查询后排序,例如:
select
3.select * from 表 where id >= ALL (select id from表);
select * from 表 where id <= ALL (select id from表);
select * from 表 where id = (select max(distinct id) from 表);
select * from 表 where id = (select min(distinct id) from 表);
转自:http://blog.sina.com.cn/s/blog_670dd1b10100kj5e.html