mssql sqlserver 使用sql脚本检测数据表中一列数据是否连续的方法分享
程序员文章站
2022-08-30 23:05:03
原文地址:http://www.maomao365.com/?p=7335 摘要: 数据表中,有一列是自动流水号,由于各种操作异常原因(或者插入失败),此列数据会变的不连续,下文将讲述使用sql脚本的方式获取数据表中的数据是否连续的方法分享,如下所示: 实验环境:sqlserver 2008 R2 ......
摘要:
数据表中,有一列是自动流水号,由于各种操作异常原因(或者插入失败),此列数据会变的不连续,下文将讲述使用sql脚本的方式获取数据表中的数据是否连续的方法分享,如下所示:
实验环境:sqlserver 2008 r2
例:获取表test中keyid是否为连续的数据
实现思路:
1.采用row_number 对表test重新生成流水号
2.采用with as (cte)表达式将重新生成流水号的表放入临时表
3.对临时表自身进行 左连接(前一行和后一行互补),然后比较行中两张表的keyid 是否相差1,
如果相差1,则代表连续数据行,反之为非连续行数据
create table test (keyid int,info varchar(60)) go insert into test(keyid,info)values (1,'maomao365.com'),(2,n'连续数判断'), (4,n'blog教程'),(5,'maomao'), (8,'test'),(9,'info') ; with tmp as (select row_number() over (order by keyid asc ) as keyidnew, * from test ) select a.keyidnew, a.keyid,a.info , case when isnull(a.keyid,0)-1 = b.keyid or b.keyid is null then '连续' else '不连续' end as '连续标志' from tmp a left join tmp b on a.keyidnew = b.keyidnew+1 ; go truncate table test drop table test
上一篇: .NET Core实战项目之CMS 第五章 入门篇-Dapper的快速入门看这篇就够了
下一篇: 大比速:remoting、WCF(http)、WCF(tcp)、WCF(RESTful)、asp.net core(RESTful)
推荐阅读
-
mssql sqlserver 使用sql脚本剔除数据中的tab、空格、回车等特殊字符的方法分享
-
mssql sqlserver 使用sql脚本 清空所有数据库表数据的方法分享
-
mssql sqlserver 使用sql脚本检测数据表中一列数据是否连续的方法分享
-
mssql sqlserver 使用sql脚本实现相邻两条数据相减的方法分享
-
mssql sqlserver 使用sql脚本获取群组后,按时间排序(asc)第一条数据的方法分享
-
mssql sqlserver 使用sql脚本剔除数据中的tab、空格、回车等特殊字符的方法分享
-
mssql sqlserver 使用sql脚本检测数据表中一列数据是否连续的方法分享
-
mssql sqlserver 使用sql脚本实现相邻两条数据相减的方法分享