2017-07-15 56 views
0

我試圖從一個表,其中的ID是重複刪除數據,但在一定值保持另一列刪除如果1列複製基於另一列

key . id . info . flag 
1 .  A .  apple . y 
2 .  B .  banana . n 
3 .  B .  banana . y 
4 .  C .  orange . n 

我想刪除行2其中「id」是重複的並且將標誌值保持爲「y」。該表> 100K行

我試過DISTINCT和分組依據的各種組合沒有一個偉大的結果

+0

有人可以張貼一些你已經嘗試過...值它會是很好的發佈你」已經得到了,爲什麼它似乎不工作的權利。如果兩個重複記錄的標誌都是'n'呢? –

+0

首先嚐試編寫一個'SELECT'查詢,返回要刪除的行。 – axiac

回答

1

您可以通過使用一組,計數和具有過濾可能的ID 如果你想刪除其中y

delete from 
    my_table where id in (
    select t.id from(
     select id 
     from my_table 
     group by id 
     having count(*) > 1 
) t 
    and flag ='y') 

否則,如果你想保持y,則

delete from 
    my_table where id in (
    select t.id from(
     select id 
     from my_table 
     group by id 
     having count(*) > 1 
) t 
    and flag <>'y') 
+1

從問題的文本,我會說,OP希望保持在'國旗'列'y'的記錄,不刪除它們... – axiac

+0

@axiac ..謝謝..答案更新兩種情況下 – scaisEdge

+0

... @axiac ...錯誤更正 – scaisEdge