Android 添加两个SQlite查询的结果
我想添加两个单独的计数SQlite查询的结果。假设我有两个名为entries和scores的表,并有两个查询: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
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:我更新了我的帖子,解释了我的目标。