SQLite同表关联查询:按指定条件筛选并求和remote字段
解决方案:基于关联条件的SQL求和查询
没问题,我来帮你搞定这个查询需求!咱们可以通过两种常见的SQL写法来实现你的要求,下面分别说明:
方法1:使用子查询(直观易懂)
这种写法直接把你提到的“查询2”作为筛选条件嵌入到求和查询中,逻辑清晰,适合快速实现:
SELECT SUM(remote) AS total_remote FROM Fields WHERE unique_id = '30008' AND id IN (SELECT id FROM Fields WHERE unique_id = '30009' AND remote = 1);
逻辑解释:
- 子查询
(SELECT id FROM Fields WHERE unique_id = '30009' AND remote = 1)会先筛选出符合条件的id列表(根据你的示例数据,这里得到的是1和2) - 外层查询只统计
unique_id=30008且id在上述列表中的记录,最后对remote字段求和(示例中对应24+5=29)
方法2:使用自连接(性能更优)
如果你的表数据量较大,使用自连接的方式通常会比子查询有更好的性能表现:
SELECT SUM(f2.remote) AS total_remote FROM Fields f1 JOIN Fields f2 ON f1.id = f2.id WHERE f1.unique_id = '30009' AND f1.remote = 1 AND f2.unique_id = '30008';
逻辑解释:
- 把
Fields表拆分成两个逻辑表:f1用来筛选unique_id=30009且remote=1的记录,f2用来筛选unique_id=30008的记录 - 通过
id字段将两个表关联,确保只统计符合条件的id对应的f2表中的remote值 - 最后对关联后的
f2.remote求和,得到结果
根据你的示例数据,两种方法都会返回29,完全符合你的需求。
内容的提问来源于stack exchange,提问作者Shubham Sahu
相关产品推荐
相关产品推荐

