如何找到属于同一行的两个不同集的计数之间的差异?

时间:2016-01-29 17:35:30

标签: sql mysqli

我试图在我的博客中找到投票数,这相当于投票时间和投票时间之间的差异。

所有投票都存储在表votes的数据库中。如果表中的votetype字段等于0,则表示用户已投票。如果它等于1,则用户已将该帖子投票。

我想找出投票计数和投票数之间的差异。像这样的查询。

SELECT
    COUNT(
        SELECT * FROM votes WHERE votetype=0
    )
    -
    COUNT(
        SELECT * FROM votes WHERE votetype=1
    ) 
FROM votes WHERE postid=1

但是这个查询给了我一个语法错误。

我如何找到投票数?

1 个答案:

答案 0 :(得分:2)

您可以使用条件聚合。对于upvotes,您可以为每行分配1,为{0}分配-1。将它们相加然后加起来。

SELECT 
sum(case when votetype=0 then 1 else 0 end) + 
sum(case when votetype=1 then -1 else 0 end)
FROM votes 
WHERE postid=1