MySQL:计算组合值的多个和,其中条件
在MySQL 5.5中,我一直试图从上表返回两个结果。1.所有反对票的组合值。2.所有赞成票的组合值。所以正的应该是4,负的应该是-3。投票字段没有空值 此SQL无法按我的预期工作: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 | |
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