从SQL中查找不正确的数据

从SQL中查找不正确的数据,sql,Sql,如下所示,除第5行外,数据还在增加。如何使用SQL代码查找该数据 身份证件 价值 1. 102.312 2. 103.412 3. 104.621 4. 105.512 5. 102.561 6. 106.632 7. 107.742 您需要一列来表示要应用的顺序。假设您的表中有一个列id,我们可以使用它。这种列通常不能保证是连续的,即没有间隙 查找值不大于上一个值的行的最简单方法是使用LAG,这在大多数现代DBMS中应该是可用的。对于MySQL,LAG从版本8开始提供 select * fro

如下所示,除第5行外,数据还在增加。如何使用SQL代码查找该数据

身份证件 价值 1. 102.312 2. 103.412 3. 104.621 4. 105.512 5. 102.561 6. 106.632 7. 107.742
您需要一列来表示要应用的顺序。假设您的表中有一个列id,我们可以使用它。这种列通常不能保证是连续的,即没有间隙

查找值不大于上一个值的行的最简单方法是使用LAG,这在大多数现代DBMS中应该是可用的。对于MySQL,LAG从版本8开始提供

select *
from
(
  select t.*, lag(value) over (order by id) as previous_value from mytable t
) x
where value <= previous_value
order by id;
您可以按如下方式使用EXISTS:

select id, value
  from your_Table t 
 where exists 
       (select 1 from your_Table tt
         where tt.id < t.id and tt.value > t.value)

您已经标记了许多不同的数据库。你到底在用哪一个?还有,这是文本数据吗?如果不是,该点是否特定于您的区域设置?请仅标记您正在使用的DBMS。你怎么确定第五排是什么?我看到您对显示给我们的行进行了编号,但实际上是否有一列表示此顺序?像Akina编辑中的id?请告诉我们您的尝试-因此不是代码编写服务。我删除了冲突的数据库标记。请仅为实际使用的DBMS添加一个标记。如果第六行的值为104.999,则它将大于第五行的值,但仍小于第四行的值。是否要在结果中显示此行?
select *
from
(
  select t.*, lag(value) over (order by id) as previous_value from mytable t
) x
where value <= previous_value
order by id;
select id, value
  from your_Table t 
 where exists 
       (select 1 from your_Table tt
         where tt.id < t.id and tt.value > t.value)