博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索: 帮助

CLEANER

如果你的工作,机器也可以做。那总有一天,你也要变成机器。
   yuechaotian.cublog.cn
关于作者  
name:yuechaotian
employment:coder
age:25
from:NEU
about me:a retardate
email:yuechaotian(at)gmail.com
msn:yuechaotian(at)hotmail.com

我的分类  




SQL — 找到连续号中的断号
需求如下:在一个 NUMBER 类型的列中,本应为连续的数字,由于修改变得不连续了。比如是这样的(test_yct.id):
 
SQL> desc test_yct;
Name Type         Nullable Default Comments
---- ------------ -------- ------- --------
ID   NUMBER       Y                        
NAME VARCHAR2(20) Y            
 
SQL> select * from test_yct;
 
ID NAME
-- ------------------------------------------
 1 yct1
 2 yct2
 3 yct3
 5 yct5
 6 yct6
 9 yct9
10 yct10
11 yct11
13 yct13
 
9 rows selected
 
现在要从该表中查询最小的断号,对于上面的数据,应该查询出数值“4”;如果没有断号,那么应该查询的结果为“最大 ID + 1”。下面我们用一个 SQL 来实现它:
 
SQL> SELECT MIN(ID)
  2    FROM (SELECT MIN(A.ID) + 1 ID
  3            FROM TEST_YCT A, TEST_YCT B
  4           WHERE A.ID + 1 = B.ID(+)
  5             AND B.ID IS NULL
  6          UNION ALL
  7          SELECT MAX(ID) + 1 ID
  8            FROM TEST_YCT
  9         );
 
   MIN(ID)
----------
         7

 发表于: 2008-08-12,修改于: 2008-08-12 22:36 已浏览356次,有评论0条 推荐 投诉

  网友评论

  发表评论



Copyright © 2001-2006 ChinaUnix.net All Rights Reserved

感谢所有关心和支持过ChinaUnix的朋友们
页面生成时间:0.02398

京ICP证041476号