SQLite - 根据表b中相关行的计算结果从表a中选择

时间:2017-02-15 16:04:38

标签: sql database sqlite

我有两个表,“主题”(表a)和“topic_votes”(表b)。 表b中的每一行都有一个属性“vote”(布尔值)。

我需要从主题中选择行,并按topic_votes中所有相关行的总和对它们进行排序,其中vote = true减去topic_votes中带有vote = false的所有相关行。

例如,对于“主题”中的一行,“topic_vote”中总共有四行,其中3行使用vote = true,1行使用vote = false,在这种情况下,“sum_total”将为2(3 - 1)

我如何在sqlite中实现这个?

1 个答案:

答案 0 :(得分:1)

您可以在子查询中找到每个主题的投票数差异,然后将其与主题表一起加入:

select t.*
from topics t
join (
    select topic_id, 
        sum(case when topic_vote = 'true' then 1 else 0 end) -
        sum(case when topic_vote = 'false' then 1 else 0 end) diff
    from topic_votes
    group by topic_id
) v on t.topic_id = v.topic_id
order by v.diff desc, t.topic_id;

我假设关系列是topic_id。您可以随意将其设置为您拥有的任何列名称。