一尘不染

如何使用SQL查询从表中删除重复项

sql

我有一张桌子,如下所示:

emp_name   emp_address  sex  matial_status  
uuuu       eee          m    s
iiii       iii          f    s
uuuu       eee          m    s

我想基于3个字段emp_name,emp_address和sex删除重复的条目。和我的结果表(删除重复项后)应类似于-

emp_name    emp_address   sex   marital_status
uuuu        eee           m     s
iiii        iii           f     s

我不记得如何为此编写SQL查询。任何人都可以帮忙吗?


阅读 170

收藏
2021-03-10

共1个答案

一尘不染

看起来所有四个列值都是重复的,因此您可以执行以下操作-

select distinct emp_name, emp_address, sex, marital_status
from YourTable

但是,如果婚姻状况可能有所不同,并且您还有其他根据其选择的列(例如,您希望基于create_date列作为最新记录),则可以执行此操作

select emp_name, emp_address, sex, marital_status
from YourTable a
where not exists (select 1 
                   from YourTable b
                  where b.emp_name = a.emp_name and
                        b.emp_address = a.emp_address and
                        b.sex = a.sex and
                        b.create_date >= a.create_date)
2021-03-10