[英]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.