oracle 怎么得到一个表中连续ID中断开的ID

oracle 怎么得到一个表中连续ID中断开的ID,第1张

我的思路是用1~10

减去

除了断点以外的ID,

然后查找(断点ID-1)

那一行的记录。这个脚本具有可扩展性。当你取的是100或者其他数值也可以。我用的数据库是oracle。具体做法:

1

新建一张表B,

为了存全部的1

~10

CREATE

table

B

as

select

ID

FROM

A

where

1=2;

2

向B表中插入1~10,

C表是数据库中任意表要求至少有11行数据,为了取rownum

insert

into

B

select

rownum

from

C

where

rownum

<

11;

3

查找断点

select

from

A

where

ID

IN

(select

ID

-1

from

B

where

ID

not

in

(select

ID

from

A)

)

;

只有几万条数据,那就好办多了,列举个笨方法如下

如果要一次性查出来,需要用递归了,因为不知道你中间的断点会有多少个,所以建议把这个表复制一份,直接对表进行删除 *** 作

直接for循环

for($i ==1;$i<你的最大数据条数;$i++){

查询你的记录,是否有等于$i和$i+1的,如果这两条记录同时存在就删除$i编号

}

DECLARE @T1 table(UserID int , [name] nvarchar(50),num int);   

insert into @T1 (UserID,[name],num) values (1001,'a',8)   

insert into @T1 (UserID,[name],num) values (1002,'b',6)   

insert into @T1 (UserID,[name],num) values (1003,'c',8)   

insert into @T1 (UserID,[name],num) values (1004,'a',8)   

insert into @T1 (UserID,[name],num) values (1005,'b',8)  

select   from  @t1

 select a  from 

(select  UserID,[name],[num] from  @t1 ) a  join

(select  UserID,[name],[num]  from  @t1 ) b  on aUserID<bUserID and aUserID+1=bUserID

and anum=bnum

group by auserid,a[name],a[num]

 

 

 得到结果:1003 c 8

         1004 a 8

假如你的原来的表tb有

id,name,address三列

其中id是自动增长列,删除其中若干行以后,你可以这样啊

创建存储过程

createproc

as

begin

declare@temptable

(

idintidentity(1,1),namevarchar(20),addressvarchar(20)

)

insert@temp

selectname,addressfromtb

selectfrom@temp

end

这样你就可以得到一个ID连续的新表了

以上就是关于oracle 怎么得到一个表中连续ID中断开的ID全部的内容,包括:oracle 怎么得到一个表中连续ID中断开的ID、mysql查询自增id不连续 怎么 *** 作、SQL数据库中查询连续编号的的数据。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9517667.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存