2011-05-05 53 views
-2

我想有一個SQL查詢來選擇所有這些重複的行。例如,在名爲OWNER_NAME的列中,有數千條記錄。但我只選擇那些被複制像SQL查詢選擇僅複製的所有數據行

阿賈伊
阿賈伊·辛格
阿賈伊·沙瑪
博比·德爾
鮑比
維克拉姆·辛格
維克拉姆·夏爾馬的名字。
意味着整個字母系列應該覆蓋n的所有單名應刪除

+1

在那裏看不到任何重複...?上面哪一行應該刪除? – 2011-05-05 10:32:38

+1

請輸入以上輸入中的預期輸出 – Mayank 2011-05-05 10:36:47

+0

您是否想要選擇同時顯示爲全名的一部分的單個名稱,並刪除這些名稱? – StevieG 2011-05-05 10:48:48

回答

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 ize它也。

0

假設你想刪除consisiting只有姓的所有行:

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

這將刪除不包含所有行一個空格字符。

+0

我想他說他想選擇他們。 – Atticus 2011-05-05 10:42:04

+0

@Jobz - 不,最後一個句子說「應該涵蓋整個字母表系列n所有單個名字都應該刪除」 – APC 2011-05-05 11:58:51

-1

我會將它存儲到一個數據集並循環重複。