微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SqlServer 实现rownum 的功能

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),管道,程序语言,讲师,资历
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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐