如何筛选掉重复数据

微信截图_20211110094822.png

每个人只有一个工号, 但是因为某些原因导致一个工号两个姓名, 怎么把异常的工号姓名的数据筛选掉不统计进来?用sql语句应该怎么写

停电1小时 发布于 2021-11-10 09:50
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
1
free_zzLv6中级互助
发布于2021-11-10 09:54(编辑于 2021-11-10 10:14)

通过什么去判断是异常的数据?如果是你人工判断的话那就没辙了

select * from tab a left join (select 工号,count(姓名) as a from tab group by 工号 having a=1) b on a.工号=b.工号

union all

select * from tab a left join (select 工号,count(姓名) as a from tab group by 工号 having a>1) b on a.工号=b.工号

where a.姓名 not in (select 姓名 from tab a left join (select 工号,count(姓名) as a from tab group by 工号 having a=1) b on a.工号=b.工号)

最佳回答
0
杨朝健Lv5中级互助
发布于2021-11-10 10:24(编辑于 2021-11-10 10:28)

异常人员:

select * from 人员表 t

where exists (select 1 from 人员表 where 姓名=t.姓名 and 工号<>t.工号)

    and exists (select 1 from 人员表 where 姓名<>t.姓名 and 工号=t.工号)

剔除异常人员:

select * from 人员表 t

where (not exists (select 1 from 人员表 where 姓名=t.姓名 and 工号<>t.工号)

     or exists (select 1 from 人员表 where 姓名<>t.姓名 and 工号=t.工号)

)

  • 3关注人数
  • 382浏览人数
  • 最后回答于:2021-11-10 10:28
    请选择关闭问题的原因
    确定 取消
    返回顶部