2014-02-15 28 views
0

我從多個CSV文件導入了該數據庫以保留列名,並且還有更多的CSV文件仍然需要上傳,因此無法添加唯一的ID。刪除表中沒有ID的多個條目

查詢應該是這樣的:

delete from table1 
    USING table1, table1 as vtable 
    WHERE (NOT table1.ID=vtable.ID) 
    AND (table1.field_name=vtable.field_name) 

如果我寫這樣一切查詢將被刪除:

delete from table1 
    USING table1, table1 as vtable 
    WHERE 
    AND (table1.field_name1=vtable.field_name1) AND (table1.field_name2=vtable.field_name2) 
    AND (table1.field_name3=vtable.field_name3) AND (table1.field_name4=vtable.field_name4) 

請幫我找到的解決方案,從表中刪除,其中場name1,2 ,3,4是相同的,沒有任何明確的ID。

+0

好,如果你沒有一個唯一的ID爲每個記錄如何確定兩個記錄是相同或不同?你的疑問根本沒有意義!是不是表1的別名?您指的是兩個查詢中的同一列。爲什麼每個添加到表格的記錄都不能有一個自動增量ID? –

+0

我從多個CSV文件導入數據庫到列名必須維護,並從更多的CSV文件仍然需要上傳,所以不能添加一個唯一的ID – dissectorz

+1

我不建議改變列名稱,你可以簡單地添加一個PK列到你的表。如果兩個CSV文件包含相同的記錄會怎麼樣?我認爲這是你在這裏試圖解決的問題。如果您想要在沒有唯一ID的情況下執行此操作,則必須考慮確定兩條記錄相同或不相同的條件(即,您需要比較列的值,以確定表中的兩條記錄是相同還是某些方式可比),你不能根據列名刪除。 –

回答

1

也許您可以在產品名稱上添加唯一鍵。

ALTER IGNORE IGNORE table_name 
ADD UNIQUE KEY pdt_name(field_name); 

在這個改變,它會刪除重複。此後,你可以做INSERT IGNORELOAD DATA .. IGNORE

+0

什麼是pdt_name? – dissectorz

+0

您的專欄名稱 – georgecj11