SQL 获取连续编号中断号的最小值
来源:互联网 发布:python使用指南 下载 编辑:程序博客网 时间:2024/06/07 01:06
问题描述;返回最小的缺失数,要求一定是正数.IF OBJECT_ID('dbo.T1') IS NOT NULL DROP TABLE dbo.T1;GOCREATE TABLE dbo.T1( keycol INT NOT NULL PRIMARY KEY CHECK(keycol > 0), datacol VARCHAR(10) NOT NULL);INSERT INTO dbo.T1(keycol, datacol) VALUES(3, 'a');INSERT INTO dbo.T1(keycol, datacol) VALUES(4, 'b');INSERT INTO dbo.T1(keycol, datacol) VALUES(6, 'c');INSERT INTO dbo.T1(keycol, datacol) VALUES(7, 'd');--方法1:case when ....endselect case when not exists(select * from T1 where keycol=1) then 1else (select MIN(keycol) from T1 a where not exists(select * from T1 where keycol=a.keycol+1))+1 end--方法2;COALESCE(a,b)函数--具体翻MSDN吧select coalesce(MIN(keycol+1),1)from T1 awhere not exists(select * from T1 where keycol=a.keycol+1) and exists(select * from T1 where keycol=1)--这个EXISTS如果为NULL where 条件为假,那么MIN(KEYCOL+1)得到一个NULL,那么函数取第二个参数1 --方法3:临时表(这里的临时表产生方法我在后面会说,当然我之前第一次的学习笔记也有,有兴趣的可以去翻翻)select top 1 Nfrom T1 right join NUM on T1.keycol=NUM.N--这里的NUN表是一个从1-1000000的表where N<=(select MAX(keycol) from T1 ) and keycol is null--方法4:表之间的OUTER JOINSELECT case when not exists(select * from T1 where keycol=1) then 1else (select MIN(A.keycol + 1)FROM dbo.T1 AS A LEFT OUTER JOIN dbo.T1 AS B ON B.keycol = A.keycol + 1WHERE B.keycol IS NULL)end
0 0
- SQL 获取连续编号中断号的最小值
- SQL 获取连续编号中断号的最小值
- 在一组不连续编号中取得大于某给定值的不存在的最小值
- 巧用SQL实现连续编号
- SQL中自动获取编号的函数
- sql获取自动生成的ID编号
- 如何使用SQL语句查询连续编号中缺失的编号?
- SQL获取下个一个自动生成的编号
- 根据当前日期获取下一个编号的SQL语句
- 获取cpu的编号
- 获取数组的最小值
- 自动获取当前编号的下一个编号
- 不同类型的不连续的最小值
- 不同类型的不连续的最小值
- 解决auto_increment 编号不连续的问题
- 解决auto_increment 编号不连续的问题
- 在论坛中出现的比较难的sql问题:4(row_number函数+子查询 分组连续编号问题)
- 获取编号的分页效果
- 【java】itoo项目实战之EJB中的RMI框架
- jquery ajax 解决跨域访问问题
- Go语言中的单元测试及反向代理
- 选择排序----数组实现
- 将求最长子序列的算法由O(n²)改进为O(n).
- SQL 获取连续编号中断号的最小值
- 部分真题整理4
- Go语言中使用panic和recover简化错误处理
- JSTL标签(可以直接在jsp页面格式化)
- 支持向量机之线性支持向量机(三)
- 容器 Collection和Map
- 黑马程序员-java-反射
- linux下好用的文本编辑器nano
- findContours函数参数说明