SqlServer 实现rownum 的功能_数据库_dragoo1的专栏-CSDN博客

来源: SqlServer 实现rownum 的功能_数据库_dragoo1的专栏-CSDN博客

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   *   from  ”   &  m_tablename   &  ”   WHERE  ROWNUM <=300 ”        取前三百行记录

“SELECT   ROWNUM   AS  序号,A.*   FROM  控制点查询信息   A    WHERE   A.查询编码= ‘888888 ‘  ORDER   BY  序号 ”
增加序号字段

但在SQL   SERVER  中不能运行,好像不识别ROWNUM。如果要替换(最好能直接替换的,因为本系统是ORACEL与SQL  SERVER都可以运行的),应该用什么啊?

释:

1.–rownum在oracle里面就是物理顺序,那么

SQLServer就直接select   top  300,不用管用什么排序

2.–查询后排序,例如:
select   序号=(select   count(1)  from   TableName  where   id<=a.id),*   from  TableName   a

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

赞(0) 打赏
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏