【问题标题】:Delete duplicates entries in SQLite删除 SQLite 中的重复条目
【发布时间】:2011-04-06 08:11:50
【问题描述】:

我有一个包含重复条目的表。除了primary_key之外所有的条目都是一样的。

条目甚至存储一个唯一的 ID,如果条目是重复的 (secondID),该 ID 将相同。

即使看起来并不难,我也无法在 Android 中使用 rawQuery 来删除基于第二个 ID 的重复条目。

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

我可能对这个查询有很大的错误,但似乎我已经尝试了一些非常复杂的查询和一些非常简单的查询,比如上面的查询,但没有运气。

任何帮助将不胜感激。

【问题讨论】:

    标签: android sql sqlite


    【解决方案1】:

    或者是这样的:

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

    应该选择每个不同 secondID 的第一个实例的主键,并删除不在该列表中的所有内容。

    【讨论】:

      【解决方案2】:

      试试这个..

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

      a1 和 b1 是同一张表

      【讨论】:

        【解决方案3】:

        这将起作用:

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

        【讨论】:

        • 这种语句很容易受到 SQL 注入的攻击。
        • 这将删除所有内容...例如,如果 secondID 等于 400,您的查询将是 DELETE FROM table WHERE 400=400
        【解决方案4】:

        试试这个:

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

        【讨论】:

        • 这将删除所有内容...例如,如果secondID 等于400,您的查询将是DELETE FROM table WHERE 400=400...
        猜你喜欢
        • 2014-08-01
        • 2013-03-09
        • 2021-12-16
        • 2021-01-22
        • 1970-01-01
        • 2012-04-10
        • 1970-01-01
        • 2012-08-13
        • 1970-01-01
        相关资源
        最近更新 更多