zoukankan      html  css  js  c++  java
  • 流水號自動補號和計算所缺最小號和最大號

    --自已做標識列的例子,不自動重排編號,而是自動補號:

    --創建得到最大id的函數
    create function f_getid()
    returns char(3)
    as
    begin
    declare @id int

    if not exists(select 1 from tb where id='001')
      
    set @id=1
    else
    begin
      
    select @id=max(id) from tb
      
    if @id is null
        
    set @id=1
      
    else
        
    begin
          
    declare @id1 int
          
    select @id1=min(id) from tb a where id<>@id and not exists(select 1 from tb where id=a.id+1)
          
    if @id1 is not null set @id=@id1
          
    set @id=@id+1
        
    end
    end
    return(right('000'+cast(@id as varchar),3))
    end
    go

    --創建表
    create table tb(id char(3primary key default dbo.f_getid(),name varchar(10))
    go


    --插入記錄測試
    insert into tb(name) values('張三')
    insert into tb(name) values('張四')
    insert into tb(name) values('張五')
    insert into tb(name) values('張六')
    insert into tb(name) values('張七')
    insert into tb(name) values('張八')
    insert into tb(name) values('張九')
    insert into tb(name) values('張十')

    --顯示插入的結果
    select * from tb

    --刪除部分記錄
    delete from tb where name in('張三','張七','張八','張十')

    --顯示刪除後的結果
    select * from tb

    --再次插入記錄
    insert into tb(name) values('李一')
    insert into tb(name) values('李二')

    --顯示插入的結果
    select * from tb order by id
    go

    --刪除環境
    drop table tb
    drop function f_getid

    /*--測試結果
    id   name       
    ---- ---------- 
    001  李一
    002  張四
    003  張五
    004  張六
    005  李二
    007  張九

    (所影響的行數為 6 行)
    --
    */

    另外一种計算缺號的算法
    ---最小
    --
    select min(b+1) as lostnum from a where (not ((b+1) in (select b from a)))
    select min(a+1as lostnum from t where (not ((a+1in (select a from t)))

    ---最大
    --
    select max(b-1) as lostnum from a where (not ((b-1) in (select b from a)))
    select max(a-1as lostnum from t where (not ((a-1in (select a from t)))

    申明

    非源创博文中的内容均收集自网上,若有侵权之处,请及时联络,我会在第一时间内删除.再次说声抱歉!!!

    博文欢迎转载,但请给出原文连接。

  • 相关阅读:
    python2.7之打飞机(文末附素材链接)
    python画小猪佩奇
    什么叫递归
    DIV居中的几种方法
    什么是控制反转
    上传图片及时预览
    MVC与三层的区别
    From表单提交刷新页面?
    文件上传之form表单篇
    文件上传之伪Ajax篇
  • 原文地址:https://www.cnblogs.com/Athrun/p/1149876.html
Copyright © 2011-2022 走看看