MySQL:计算组合值的多个和,其中条件

MySQL:计算组合值的多个和,其中条件,mysql,sql,count,Mysql,Sql,Count,在MySQL 5.5中,我一直试图从上表返回两个结果。1.所有反对票的组合值。2.所有赞成票的组合值。所以正的应该是4,负的应该是-3。投票字段没有空值 此SQL无法按我的预期工作: article_vote table +------------+------+ | article_id | vote | +------------+------+ | 1 | 3 | | 1 | 1 | | 1 | -1 | |

在MySQL 5.5中,我一直试图从上表返回两个结果。1.所有反对票的组合值。2.所有赞成票的组合值。所以正的应该是4,负的应该是-3。投票字段没有空值

此SQL无法按我的预期工作:

article_vote table
+------------+------+
| article_id | vote |
+------------+------+
|          1 |    3 |
|          1 |    1 |
|          1 |   -1 |
|          1 |   -2 |
+------------+------+

我哪里做错了?

你可以试试这样的方法:

Array ( [vote] => -22 [positive] => 0 [negative] => 1 ) 
| POSITIVE | NEGATIVE |
|----------|----------|
|        4 |       -3 |
试试这个:

mysql> SELECT * FROM article_vote;
+------------+------+
| article_id | vote |
+------------+------+
|          1 |    3 |
|          1 |    1 |
|          1 |   -1 |
|          1 |   -2 |
+------------+------+
4 rows in set (0.00 sec)

SELECT 
    SUM(CASE WHEN vote > 0 THEN vote ELSE 0 END) AS positive,
    SUM(CASE WHEN vote < 0 THEN vote ELSE 0 END) AS negative
FROM article_vote
WHERE article_id = 1;

+----------+----------+
| positive | negative |
+----------+----------+
|        4 |       -3 |
+----------+----------+

小提琴。

纠正这样的问题:

Array ( [vote] => -22 [positive] => 0 [negative] => 1 ) 
| POSITIVE | NEGATIVE |
|----------|----------|
|        4 |       -3 |

很抱歉,我想请您选择不同的商品id。。。太好了。@TrungDQ GROUPBY子句处理重复的行。这应该只返回一行。这只返回一行。因此,如果您删除所有从开始的,结果仍然相同。@TrungDQ我在您发表评论的同时修改了GROUP BY子句。我想我们误会了。哦,很抱歉。。。不管怎样,问得好。我选择这个而不是莫斯蒂的。谢谢你。代表:
| POSITIVE | NEGATIVE |
|----------|----------|
|        4 |       -3 |
select article_id, 
  sum(case when vote >0 then vote else 0 end) as postive,
  sum(case when vote <0 then vote else 0 end) as negative
FROM article_vote
GROUP BY article_id