簡體   English   中英

比較和計數mysql行中的值

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM