首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > IBM DB2 >

请问一下小弟我这个sql的思路该真么写?(能否用一个sql搞定)

2012-03-13 
请教一下我这个sql的思路该真么写?(能否用一个sql搞定)工作中遇到一个sql,请教各位以下问题,点拨一下思路

请教一下我这个sql的思路该真么写?(能否用一个sql搞定)
工作中遇到一个sql,请教各位以下问题,点拨一下思路和解决办法,谢谢!!

主要是个user master表,id为主键,如下例
T_USER

ID(number(2)) NAME(nvarchar2(2)) 
1 张三
2 ..
3 ..
6 ..
7 ..
10 ..
..
99

现在的目的是需要进行这样的查询:

输入 id = 1为检索条件,这个时候需要返回的结果集是 id = 4;
输入 id = 4为检索条件,这个时候需要返回的结果集是 id = 4;
输入 id = 6为检索条件,这个时候需要返回的结果集是 id = 8;
输入 id = 99为检索条件,这个时候需要返回的结果集是 id = 4(也就是重新从1开始进行检索);

这个sql想达到的目的是输入一个值,sql就可以在数据库中找到这个大于等于这个值且在数据库中不存在的id,如果该值存在就依次+1去重新进行检索直至找到不存在的ID。

[解决办法]
就是找到缺失的Id

select Min(T_User.Id + 1)
from T_User
where not Exists(select * from T_User as T where T.Id = T_User.Id + 1) and T.User > @Id

SQL Server 2005 技术内幕:T-SQL查询 这本书上有类似的例子。

热点排行