【问题标题】:ANDROID: Searching SQLite db for rows having 3 columns with equal valuesANDROID:在 SQLite db 中搜索具有相同值的 3 列的行
【发布时间】:2017-04-25 15:26:00
【问题描述】:

我正在尝试搜索表 (TABLE1) 以获取每列具有相同值的行(数量、星期几和类别)。然后我想将这些行复制到一个新表(TABLE2)中。

TABLE1

rowid || AMOUNT  || DAYOFWEEK  || CATEGORY  ||    DATE
------------------------------------------------------------
1     ||    30   ||    MON     ||    CAT1   ||  10/04/2017
2     ||    40   ||    TUE     ||    CAT4   ||  11/04/2017
3     ||    30   ||    MON     ||    CAT1   ||  18/04/2017
4     ||    50   ||    SUN     ||    CAT2   ||  23/04/2017


TABLE2 (DESIRED OUTCOME)

rowid || AMOUNT  || DAYOFWEEK  || CATEGORY  ||     DATE
------------------------------------------------------------
  1   ||    30   ||    MON     ||    CAT1   ||  10/04/2017
  2   ||    30   ||    MON     ||    CAT1   ||  18/04/2017

从上面的场景中,我想从 TABLE1 中复制第 1 行和第 3 行的内容并将它们插入到 TABLE2 中。有关如何在 Android 上为 SQLite 编写此代码的任何建议?

【问题讨论】:

    标签: java android sqlite


    【解决方案1】:

    您可以使用 sql 语法通过从 TABLE1 中选择重复项来插入 TABLE2,如下所示(尚未测试):

    INSERT INTO TABLE2 (AMOUNT, DAYOFWEEK, CATEGORY)
    SELECT
        AMOUNT, DAYOFWEEK, CATEGORY
    FROM
        TABLE1
    GROUP BY
        AMOUNT, DAYOFWEEK, CATEGORY
    HAVING 
        COUNT(*) > 1
    

    或者

    您可以使用上面的选择填充 ArrayListobject 类并使用该 ArrayList 进行插入。

    【讨论】:

    • 这似乎不起作用当我尝试上述方法时,我不断收到此错误原因:android.database.sqlite.SQLiteException: 4 values for 3 columns (code 1): ,同时编译:插入...
    • SELECT 子句中不需要计数。
    • 立即尝试,从选择子句中删除计数
    猜你喜欢
    • 1970-01-01
    • 2018-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多