我希望有一个SQL查询来选择所有重复的行。例如,在名为OWNER_NAME的列中,有数千条记录。但我必须只选择像
那样重复的名字阿贾伊
ajay singh
ajay sharma
bobby deol
鲍比
vikram singh
vikram sharma。
意味着应该覆盖整个字母系列,所有单个名称都应该删除
答案 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)
我会将其存储到数据集中并循环播放重复项。