背景:  

  在分页功能中,记录需分页显示,需要row_number()函数标记行号。

数据表:

排序之前数据表显示:

sql语句:

 select ROW_NUMBER() over(order by id) as RowNum,Name,Val from T1

检索结果:

注意:Leslie的ID为Null,经过排序之后,rows却升为了首位。

常见错误:列名RowNum失效。

解释:在sql中热名称(即刚定的名称RowNum)不能马上使用,需要包一层查询。
比如说:实现分页显示,只想查询1-5行的结果,sql语句如下:

 select ROW_NUMBER() over(order by id) as rows,Name,Val from T1 where rows between  and 

解决方案:

 select * from
(select ROW_NUMBER() over(order by id) as rows,Name,Val from T1) U
where rows between and ;

也就是:

 with A as
(
select ROW_NUMBER() over(order by id) as rows,Name,Val from T1
)
select * from A where A.rows between and ;

检索结果:

参考资料:热名称


在某些情况下,我们希望指定RowNum的排序方式,比如把热门城市(如北京、上海等)排在靠前的位置。

这时需要组合case...when...then的方式来使用Row_Number()函数。sql语句如下:

 select ROW_NUMBER() over(
order by
case Name
when 'Leslie' then
when 'Lily' then
else end asc)as RowNum,Name,Val from T1

检索结果如下:

sql使用row_number()查询标记行号的更多相关文章

  1. SQL查询显示行号、随机查询、取指定行数据

    转自:walkingp 1.显示行号 如果数据没有删除的情况下主键与行号是一致的,但在删除某些数据,行号就与主键不一致了,这时需要查询行号就需要用新的方法,在SQL Server2005之前,需要使用 ...

  2. SQL 分组后取最小行号记录

    本示例测试两个表联接查询后,分组并取分组后的最小行号记录 测试表: tb1表结构如下: CREATE TABLE [dbo].[tb1]( ) NOT NULL, ) NULL, ) NULL, CO ...

  3. tsql 通过row_number() over() 产生行号

    先按userIP分组,再按时间排序,最后编号. select row_number() over (partition by UserIp order by insertTime),* from us ...

  4. MySQL查询获取行号rownum

    MySQL中可以使用变量产生行号,下面是2个简单例子: 使用工具:MySQL Workbench 说明:表heyf_10中字段,empid(员工工号).deptid(部门编号).salary(薪资): ...

  5. MYSQL行号

    mysql 实现行号的方法——如何获取当前记录所在行号 - senly - 博客园http://www.cnblogs.com/xinlei/archive/2011/12/16/2290349.ht ...

  6. SQL随机查询,显示行号,查询数据段

    1.显示行号 如果数据没有删除的情况下主键与行号是一致的,但在删除某些数据,行号就与主键不一致了,这时需要查询行号就需要用新的方法,在SQL Server2005之前,需要使用临时表,但在SQL Se ...

  7. sql server2005查询分析器显示行号方法

    工具栏:工具--选项--文本编辑器---所有语言--右边复选框 行号 打上勾就ok了

  8. sql查询分析器中显示行号

    -- 工具-> -- 选项-> -- 文本编辑器-> -- 所有语言-> -- 常规-> -- 显示-> -- 行号

  9. MYSQL获得查询记录的行号

    对于获得查询记录的行号这一功能,Oracle 中可以使用标准方法(8i版本以上),也可以使用非标准的ROWNUM,MS SQL Server 则在 2005 版本中提供了ROW_NUMBER()函数. ...

随机推荐

  1. jvm 实战

    https://blog.csdn.net/neutrojan/article/details/50532590# 1.ps -ef |grep java 找出最耗性能的JAVA进程2.top -Hp ...

  2. 在img标签上尽量不要使用onerror事件

    在img标签上尽量不要使用onerror事件 因为在之前的时候,我在本地对用户头像修改发现,如果图片加载失败, 使用onerror事件去获取一个默认地址的图片虽然这是可行的,但是如果刚好onerror ...

  3. Python 教程资源

    1.廖雪峰的官方网站 http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001386 ...

  4. 二分查找 2015百度之星初赛1 HDOJ 5246 超级赛亚ACMer

    题目传送门 /* 二分找到不大于m的最大的数,记做p,只要a[p] + k <= a[p+1]就继续 注意:特判一下当没有比m小的数的情况:) */ #include <cstdio> ...

  5. python_9(模块补充)

    第1章 re模块补充 1.1 贪婪匹配:回溯算法 1.2 .*?的用法 1.3 例:分组<name>取值 1.4 匹配整数删除小数 1.5 正则测试地址 第2章 重点模块 2.1 hash ...

  6. 可能是最漂亮的Spring事务管理详解 专题

    微信阅读地址链接:可能是最漂亮的Spring事务管理详解 事务概念回顾 什么是事务? 事务是逻辑上的一组操作,要么都执行,要么都不执行. 事物的特性(ACID): 原子性: 事务是最小的执行单位,不允 ...

  7. android java 知识点

    ublic,protected,friendly,private的访问权限如下: 关键字        当前类       同一package        子孙类       其他package p ...

  8. IOS 根据身份证号码获取 年龄 生日 性别

    /** 从身份证上获取年龄 18位身份证 */ -(NSString *)getIdentityCardAge:(NSString *)numberStr { NSDateFormatter *for ...

  9. Sql Server RowNumber和表变量分页性能优化小计

    直接让代码了,对比看看就了解了 当然,这种情况比较适合提取字段较多的情况,要酌情而定 性能较差的: WITH #temp AS                       (              ...

  10. Docker下redis的主从配置

    1.拉取redis镜像docker pull redis2.启动3个redis容器服务,分别使用到6379.6380.6381端口docker run --name redis-6379 -p 637 ...