sql - 如何使用 sql 检测错误的序列列?

标签 sql sql-server

我有这张 table

ID  |  Seq  
------------
 A      1      
 A      2      
 A      3      
 B      1      
 B      2     
 B      3     
 B      3     <--duplicate seq where ID=B
 C      1     
 C      2
 C      4     <--missing seq id number 3
 D      1
 D      2
 .      .
 .      .

有没有办法检测 Seq 列的逻辑是否/何时出现错误,特别是是否存在跳转和/或重复。

最佳答案

试试这个:

这应该在 sql server 和 Oracle 中都可以工作

select ID,seq
       from(
            select ID,seq,
                   row_number() over (partition by id order by seq ) rn
            from t_seq)a
where a.seq<>a.rn


SQL fiddle demo for SQL server


SQL Fiddle demo for Oracle

关于sql - 如何使用 sql 检测错误的序列列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13250851/

相关文章:

sql - 查找表中连续的空闲号码

php - SQL,如何按已知值获取在另一列中具有相同值的行?

sql-server - 包含更新触发器的更新行的表应该是什么

mysql - 从 SQL 数据库服务器更改为托管服务器的 mySQL

sql - 内连接和并集均使用 order by

sql-server - SQL 计划作业查询,上次运行的持续时间?

sql - 在 SQL 选择查询中插入虚拟行

mysql - 如何避免在 mysql 中外键有两个空值?

mysql - 试图连接字符串但出现错误

mysql - 使用更新查询按第一个表的列更新第二个表的列