首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在sql中查找错误的重复数据

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

Stack Overflow用户
提问于 2018-05-01 19:25:37
回答 3查看 39关注 0票数 0

嗨,我最近开始做软件工程师,所以这个问题可能太麻烦了,但是请耐心点。

我有三根柱子,比如说水果,颜色,味道。

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

我的问题是,我的桌子包含多重重复的口味,同样的水果和颜色。我尝试过不同的连接,但得到了错误的结果。

很抱歉有这么糟糕的描述,但是如果有人能理解和帮助我,我将非常感激。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-05-01 19:30:48

要查找对同一颜色具有多种口味的水果:

代码语言:javascript
运行
复制
select  fruit
from    fruit
group by
        fruit
,       color
having  count(distinct taste) > 1

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

代码语言:javascript
运行
复制
select  *
from    (
        select  count(*) over (partition by fruit, color) cnt
        ,       *
        from    fruits
        group by
                fruit
        ,       color
        ,       taste
        ) sub
where   cnt > 1

SQL中的工作示例。

票数 0
EN

Stack Overflow用户

发布于 2018-05-01 19:28:16

使用row_number()函数

代码语言:javascript
运行
复制
select * from (select *,
                    row_number() over (partition by fruit, taste order by fruit) Seq 
               from table t) t 
where Seq > 1;

通过这个,您发现Seq >1,如果水果有重复的味道,您可以过滤它们&使用subquerydelete状态删除它们。

代码语言:javascript
运行
复制
delete t 
from  (select *,
           row_number() over (partition by fruit, taste order by fruit) Seq 
       from table t) t
where Seq > 1;
票数 0
EN

Stack Overflow用户

发布于 2018-05-01 19:31:54

对水果、颜色设置PK或唯一约束

代码语言:javascript
运行
复制
select * 
from (select *, count(*) over (partition by fruit, color) as cnt 
      from table 
     ) t 
where t.cnt > 1 
order by fruit, color
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50122563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档