[英]Compare and count values in mysql rows
upVote DownVote
|true | 0
|true | 0
|0 | true
|true | 0
|true | 0
|0 | true
我的sql表中有上述类似的列。 我想计算upVotes-Downvotes的总数,就像stackOverflow一样。 但是由于某种原因,我在使用SQL语法时遇到了困难。
SELECT COALESCE(sum(CASE WHEN upvote THEN 1 ELSE 0 END),0) from Ratings WHERE TopicID = :topicsID
我在某个地方看到了上面的sql查询示例,但不确定我是否朝着正确的方向前进。
我想你需要减去sum(upvote)
和sum(DownVote)
SELECT sum(upvote) - sum(DownVote)
from Ratings
WHERE TopicID = :topicsID
小提琴: http ://sqlfiddle.com/#!9/b1644c/8
我认为一个布尔值的vote
列就足够了。
因为真正可能意味着upvote
,假可能意味着DownVote
CREATE TABLE Ratings
(
Vote BOOL
);
INSERT INTO Ratings VALUES
(TRUE),
(TRUE),
(0),
(0),
(TRUE),
(TRUE),
(0);
SELECT sum(CASE WHEN Vote THEN 1 ELSE 0 END) -
sum(CASE WHEN Vote THEN 0 ELSE 1 END) as vote
from Ratings
WHERE TopicID = :topicsID
小提琴: http ://sqlfiddle.com/#!9/727c2b/3
select COUNT(*) from ratings WHERE upvote=true AND TopicID = :topicsID ?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.