加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SqlServer 实现rownum 的功能

发布时间:2020-12-12 14:26:31 所属栏目:MsSql教程 来源:网络整理
导读: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 betwe

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读