如何增加缺少的序号?

来源:互联网 发布:c语言开发手册 pdf 编辑:程序博客网 时间:2024/05/16 09:46

********************************************************************************

比如有下面数据
no    id
1    a
2    b
4    d

我登陆的时候,先判断no,发现3不存在,就登陆到3去。如果3存在,那就取最大的4+1...
请问这个代码要怎么实现?

 

测试数据

CREATE TABLE T(NO NUMBER, ID VARCHAR2(10));

INSERT INTO T VALUES(1,'A');
INSERT INTO T VALUES(2,'B');

INSERT INTO T VALUES(6,'E');
INSERT INTO T VALUES(7,'F');

COMMIT;

SQL code :
给你个通用方法,如果存在空号,就把第一个空号取出,如果不存在就取最大的加1:
SELECT NVL(MAX(NO),0)+ 1 NO
 
FROM (SELECT NO, NO- ROW_NUMBER()OVER(ORDER BY NO) XFROM T)
WHERE X=
       (
SELECT MIN(X)
         
FROM (SELECT NO, NO- ROW_NUMBER()OVER(ORDER BY NO) XFROM T));
原创粉丝点击