zoukankan      html  css  js  c++  java
  • mssql sqlserver 使用sql脚本检测数据表中一列数据是否连续的方法分享

    原文地址:http://www.maomao365.com/?p=7335

    摘要:
       数据表中,有一列是自动流水号,由于各种操作异常原因(或者插入失败),此列数据会变的不连续,下文将讲述使用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 

     

  • 相关阅读:
    物联网和互联网到底有什么区别和联系呢?
    JAVA流程控制
    JAVA运算符
    JAVA中的变量及取值范围
    CSS position 属性
    web中的HTML CSS
    css选择器
    LAST_INSERT_ID
    [方法] 如何做产品规划
    [方法]需求挖掘采集的方法
  • 原文地址:https://www.cnblogs.com/lairui1232000/p/9551202.html
Copyright © 2011-2022 走看看