MySQL запрос на вопрос - PullRequest
       3

MySQL запрос на вопрос

0 голосов
/ 25 августа 2011
SELECT if((COUNT(vote=1)-COUNT(vote=0) > 0,1,count(groupid))
FROM sample WHERE uid = $uid GROUP BY groupid

В заявлении if мне было интересно, есть ли какой-нибудь простой способ добиться этого: COUNT (голос = 1) -COUNT (голос = 0)> 0

Ответы [ 3 ]

3 голосов
/ 25 августа 2011

Используйте СУММУ вместо СЧЕТА:

SELECT if((SUM(vote=1)-SUM(vote=0) > 0,1,count(groupid))
FROM sample WHERE uid = $uid GROUP BY groupid
1 голос
/ 25 августа 2011

Требуется сумма vote, за исключением того, что 0 считается -1:

SELECT if(sum(if(vote, 1, -1)) > 0, 1, count(groupid))
...
0 голосов
/ 25 августа 2011

вы пытаетесь сделать

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. Если больше, покажите «что-то», еще покажите «что-то еще»

хотя, у меня нет способа проверить это на этом компьютере, но, возможно, это приведет вас или кого-то еще в правильном направлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...