SELECT if((COUNT(vote=1)-COUNT(vote=0) > 0,1,count(groupid))
FROM sample WHERE uid = $uid GROUP BY groupid
在if语句中,我想知道是否有任何简单的方法来实现这一点:COUNT(vote = 1)-COUNT(vote = 0)> 0
答案 0 :(得分:3)
使用SUM而不是COUNT:
SELECT if((SUM(vote=1)-SUM(vote=0) > 0,1,count(groupid))
FROM sample WHERE uid = $uid GROUP BY groupid
答案 1 :(得分:1)
您希望除vote
之外的0
总和计为-1
:
SELECT if(sum(if(vote, 1, -1)) > 0, 1, count(groupid))
...
答案 2 :(得分:0)
Select columns,
case when (COUNT(vote=1) - COUNT(vote=0)) > 0
then 'something'
else 'something else' as foo
From Sample
Where uid=$uid
Group By groupid
我不太明白你想要实现的目标。 在我的例子中,当差异大于0时,你选择列(或只是那种情况)。如果它更大则显示'某事'否则显示'其他'
虽然,我没有办法在这台电脑上测试它,但也许它会引导你或其他人朝着正确的方向前进。