Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 添加两个SQlite查询的结果_Android_Performance_Sqlite - Fatal编程技术网

Android 添加两个SQlite查询的结果

Android 添加两个SQlite查询的结果,android,performance,sqlite,Android,Performance,Sqlite,我想添加两个单独的计数SQlite查询的结果。假设我有两个名为entries和scores的表,并有两个查询: SELECT COUNT(1) FROM entries WHERE key NOT IN (SELECT key FROM scores) SELECT COUNT(1) FROM scores WHERE value <= threshold 也许我可以这样做来得到他们结果的总和: SELECT COUNT(1) from ( SELECT key

我想添加两个单独的计数SQlite查询的结果。假设我有两个名为entries和scores的表,并有两个查询:

SELECT COUNT(1) FROM entries WHERE
    key NOT IN (SELECT key FROM scores)

SELECT COUNT(1) FROM scores WHERE
    value <= threshold
也许我可以这样做来得到他们结果的总和:

SELECT COUNT(1) from (
    SELECT key FROM entries WHERE
        key NOT IN (SELECT key FROM scores)
    UNION ALL
    SELECT key FROM scores WHERE
        value <= threshold
)
但这是否有点太低效了?这经常被调用,可能会影响UI的平滑度

多谢各位

[编辑]我真正想做的是:

我正在制作一个帮助学习词汇的应用程序。条目表保存有关单词类型、定义等的“静态”数据。分数表保存有关您对单词的学习情况的信息,例如性能、计划的下次复习时间

为了检查要学习/复习的剩余单词数量,我计算了分数表中尚不存在的单词数量,即从未接触过,或者当累积分数很低时,即需要复习


我之所以不将这两个表合并为一个表,这将使我的生活更加轻松,是因为有时我需要通过插入新词、删除一些词或更新它们的内容来更新entries表,而我还没有找到一种简单的方法。如果我只是简单地插入或替换,我将丢失有关分数的信息。

我想您正在寻找一个新的答案。联合将两个查询的结果组合在一起。请尝试此操作抱歉,它未经测试,我没有访问SQLite的权限:

SELECT COUNT(1) FROM
(
    SELECT 1
    FROM entries
    WHERE key NOT IN (SELECT key FROM scores)
    UNION ALL
    SELECT 1
    FROM scores
    WHERE scores.value <= threshold
)
在阅读了你问题中的编辑,解释了你需要做什么之后,我认为a更合适。这是一种将两个表合并到一个查询中的方法。大概是这样的:

SELECT COUNT(1)
FROM entries
LEFT JOIN score
    ON score.key = entries.key
WHERE score.value <= threshold
OR score.key is null

联合将删除重复的行。它必须是所有人的联盟。请看。@pst:我是sql新手。如果你发现任何错误,你能帮我吗?非常感谢你:D@Po我在主要帖子上加了一条评论。你是说。。。?它只接受*或列标识符。这是我在某处学会的一个计算行数的技巧:DPerhaps说,在英语中,最终目的是:计算行数count*应该使用。COUNT1和count*实际上是相同的。COUNT*表示对选择所有列的行进行计数,COUNT1表示对选择整数1的行进行计数。@pst:我更新了我的帖子,解释了我的目标。