SQL查询选择仅重复的所有数据行

时间:2011-05-05 10:30:54

标签: sql oracle

我希望有一个SQL查询来选择所有重复的行。例如,在名为OWNER_NAME的列中,有数千条记录。但我必须只选择像

那样重复的名字

阿贾伊
ajay singh
ajay sharma
bobby deol
鲍比
vikram singh
vikram sharma。
意味着应该覆盖整个字母系列,所有单个名称都应该删除

3 个答案:

答案 0 :(得分:2)

我会大致这样做:

SELECT * FROM (
   SELECT owner_name,
          COUNT(*) OVER (PARTITION BY CASE WHEN instr(owner_name, ' ') = 0 then owner_name
                                           else substr(owner_name, 1, instr(owner_name, ' ') - 1)
                                       END) cnt
     FROM table
) WHERE cnt > 1

它将根据第一个单词组成组(直到第一个空格,如果有的话)。也许你想upper也是这样。

答案 1 :(得分:0)

假设您要删除仅包含姓氏的所有行:

delete from my_tab where instr(name, ' ') = 0

这将删除所有不包含空格字符的行。

答案 2 :(得分:-1)

我会将其存储到数据集中并循环播放重复项。