删除重复行而不实际匹配列值

时间:2014-04-20 17:34:49

标签: sql oracle

我有一个包含以下列id,name,source的表。数据来自多个来源,并且有重复记录。我想根据名称值删除重复记录。名称值不相同。

示例:

1  123David Smith Mr.   Phonebook    
2  David                addressbook    
3  John                 addressbook   
4  John abcde           Phonebook    
5  Sarah                addressbook    
6  9876Bob              Phonebook

我想要一张看起来像

的表格
2 David   addressbook   123David Smith Mr.  Phonebook
4 John    addressbook   John abcde          Phonebook
5 Sarah   addressbook
6 9876Bob                                   Phonebook

请帮忙 感谢

1 个答案:

答案 0 :(得分:1)

看起来你不想删除它们。看起来你想要将它们结合起来。如果我理解正确,您需要这样的查询:

select coalesce(t1.id, t2.id) as id,
       t1.name, t1.source, t2.name, t2.source
from table t1 full outer join
     table t2
     on t1.source = 'addressbook' and
        t2.source = 'phonebook'
        t2.name like '%'||t1.name||'%';