2011-04-06 140 views
0

我有一個表中有重複的條目。除了primary_key以外,所有條目都是相同的。刪除SQLite中的重複條目

如果條目是重複的(secondID),條目甚至會存儲一個唯一的ID。

即使看起來不難,我在安裝一個基於第二個ID刪除重複條目的rawQuery時遇到了麻煩。

dataBase.rawQuery("DELETE FROM " + table + " WHERE " + secondID + " EQUALS " + secondID + ");", null); 

我可能挺對這種錯誤的查詢,但好像我已經嘗試了一些非常複雜的查詢和一些非常簡單的像沒有運氣上面的一個。

任何幫助,將不勝感激。

回答

6

或者是這樣的:

DELETE FROM table WHERE primary_key NOT IN (SELECT MIN(primary_key) FROM table GROUP BY secondID) 

哪些應該選擇第一個實例的主鍵每個不同的secondID,並刪除不在該列表中的所有內容。

1

試試這個..

DELETE FROM table a1 USING table b1 WHERE a1.anyfield=b1.anyfiled AND a1.id<b1.id; 

A1和B1是同桌

-1

試試這個:

dataBase.rawQuery("DELETE FROM " + table + " WHERE " + secondID + " = " + secondID + ");", null); 
+2

這將刪除一切......如果,例如,'secondID'等於400,你的查詢將是'DELETE FROM表,其中400 = 400' ... – 2013-04-29 00:01:13

-1

這將工作:

dataBase.execSQL("DELETE FROM " + table + " WHERE " + secondID + "=" + secondID); 
+0

這這種聲明有可能極易受到SQL注入的攻擊。 – StingyJack 2012-07-26 12:51:28

+2

這將刪除所有內容......例如,如果'secondID'等於400,那麼您的查詢將是'DELETE FROM table WHERE 400 = 400' – 2013-04-29 00:04:17