查字段指定数据后一行记录

简介:
/*  
ID    NUM  
1    800  
2    855  
3    866  
4    800  
5    844  
如何查NUM字段指定数据后一行记录?如NUM字段中800后一条记录 
*/  

create   table  tb(ID  int ,   NUM  int
insert   into  tb  values ( 1  ,    800  ) 
insert   into  tb  values ( 2  ,    855  ) 
insert   into  tb  values ( 3  ,    866  ) 
insert   into  tb  values ( 4  ,    800  ) 
insert   into  tb  values ( 5  ,    844  ) 
go  

-- 如果ID连续  
select  m. *   from  tb m , tb n  where  m.id  =  n.id  +   1   and  n.num  =   800  
/*  

ID          NUM          
----------- -----------  
2           855 
5           844 

(所影响的行数为 2 行) 
*/  

-- 如果ID不连续,sql 2000  
select  m.id , m.num  from  

  
select  t. *  , px  =  ( select   count ( 1 from  tb  where  id  <  t.id)  +   1   from  tb t 
) m, 

  
select  t. *  , px  =  ( select   count ( 1 from  tb  where  id  <  t.id)  +   1   from  tb t 
) n 
where  m.id  =  n.id  +   1   and  n.num  =   800  
/*  

ID          NUM          
----------- -----------  
2           855 
5           844 

(所影响的行数为 2 行) 
*/  

-- 如果ID不连续,sql 2005  

select  m.id , m.num  from  

  
select  t. *  , px  =  row_number()  over ( order   by  id)  from  tb t 
) m, 

  
select  t. *  , px  =  row_number()  over ( order   by  id)  from  tb t 
) n 
where  m.id  =  n.id  +   1   and  n.num  =   800  
/*  

ID          NUM          
----------- -----------  
2           855 
5           844 

(所影响的行数为 2 行) 
*/  

drop   table  tb 


    本文转自曾祥展博客园博客,原文链接:http://www.cnblogs.com/zengxiangzhan/archive/2010/01/03/1638192.html,如需转载请自行联系原作者


相关文章
|
13天前
|
存储 关系型数据库 索引
10. 在一个非主键字段上创建了索引, 想要根据该字段查询到数据, 需要查询几次 ?
在非主键字段上创建索引,查询数据通常需两次。对于MyISAM,先通过索引找到数据行指针,再获取数据;而InnoDB则先找主键ID,再从主键索引中查找数据。
11 0
|
3月前
|
JavaScript
记录一些报错记录
记录一些报错记录
27 0
|
10月前
|
Java 开发工具 Android开发
ASOP记录
ASOP记录
53 0
|
11月前
|
Web App开发 关系型数据库 MySQL
日常技巧记录-2018.08
日常技巧记录-2018.08
76 0
谁来帮我做记录
这一节,我们将要学习游戏开发中的记录员---变量。 开始之前,先提几个问题: - 变量的作用是什么? - 变量分为哪些类型? - 我们什么时候用到变量? - 如何判断使用哪种类型的变量?
157 0
谁来帮我做记录
|
SQL Oracle 关系型数据库
|
数据库 数据安全/隐私保护

热门文章

最新文章