在sql中查找错误的重复数据

时间:2018-05-01 19:25:38

标签: sql sql-server database

您好,我最近刚开始担任软件工程师,所以这个问题可能太过于讨论,但请耐心等待。

我有三个栏目,比方说水果,颜色,味道。

水果可以有很多颜色和味道。但是一种具有特定颜色的水果应该具有相同的味道。例如,(苹果,红色)应该只有一种味道。 (苹果,红,酸)和(苹果,红,甜)不能一起存在。

我遇到的问题是我的桌子包含多个具有相同水果和颜色的重复味道。我尝试了不同的连接但得到了错误的结果。

很抱歉这么糟糕的描述,但如果有人能理解并帮助我,我真的很感激。

3 个答案:

答案 0 :(得分:0)

使用row_number()功能

select * from (select *,
                    row_number() over (partition by fruit, taste order by fruit) Seq 
               from table t) t 
where Seq > 1;

通过这个你找到了Seq nos> 1,如果水果有重复的味道,你可以过滤它们&使用subquery delete法规

删除delete t from (select *, row_number() over (partition by fruit, taste order by fruit) Seq from table t) t where Seq > 1;
$AccessApp= New-Object -ComObject 'Access.Application'
$AccessApp.OpenCurrentDatabase($database)

 $AccessApp.Application.SetOption("Track Name AutoCorrect Info", $true)
    
 $QryDependency = $AccessApp.Application.CurrentData.AllQueries.Item($query.Name).GetDependencyInfo()
 
  ForEach($di in $QryDependency.Dependencies)
      {
              $QryObjects= $QryObjects + $di.Name +","
      }

答案 1 :(得分:0)

要找到具有相同颜色的多种口味的水果:

select  fruit
from    fruit
group by
        fruit
,       color
having  count(distinct taste) > 1

列出与这些水果相关的所有行:

select  *
from    (
        select  count(*) over (partition by fruit, color) cnt
        ,       *
        from    fruits
        group by
                fruit
        ,       color
        ,       taste
        ) sub
where   cnt > 1

Working example at SQL Fiddle.

答案 2 :(得分:0)

在水果上加上PK或唯一约束,颜色

select * 
from (select *, count(*) over (partition by fruit, color) as cnt 
      from table 
     ) t 
where t.cnt > 1 
order by fruit, color