0

假设我有一个名为 的表votes,并且该表中的一列称为vote_type0 或 1。我怎样才能COUNT获取vote_typewhere vote_typeis 1

现在,我可以通过以下查询选择vote_type总体计数,但不能选择vote_type1 或 0 的计数:

SELECT COUNT(votes.vote_id) AS vote_count
    FROM votes 
    WHERE <some condition>
    ORDER BY vote_count

如何选择 vote_types 的总数、vote_types 的数量 = 1、vote_types 的数量 = 0 和总 vote_value(votetypes = 1 减去 votetypes = 0),并按总 vote_value 排序?

编辑:请注意,1 和 0 不是投票的内在价值,而是表示赞成票和反对票的布尔表达式。

4

5 回答 5

2

我不知道您到底想做什么,但是如果您想用 Vote_Type=1 计算所有选票,请尝试

SELECT COUNT(votes.vote_id) AS vote_count
FROM votes 
WHERE votes.vote_type=1

或者如果您需要汇总选票

SELECT SUM(votes.vote_type) AS vote_sum
FROM votes 
WHERE votes.vote_type=1
于 2013-09-21T22:21:36.280 回答
1

编辑:添加了一net_vote列,我认为这是vote1 minus vote0您所追求的“”数字。

Select
    Sum(Case v.vote_type When 1 then 1 else -1 end) as net_vote
From
    Votes v
Where
    <some condition>

我已经删除了order by,因为这只会返回一行。

于 2013-09-21T22:24:55.623 回答
1
SELECT  COUNT(*) TotalVotes,
        SUM(CASE WHEN vote_type = 1 THEN 1 ELSE 0 END) TotalVoteOne,
        SUM(CASE WHEN vote_type = 0 THEN 1 ELSE 0 END) TotalVoteZero,
        SUM(CASE WHEN vote_type = 1 THEN 1 ELSE 0 END) - 
        SUM(CASE WHEN vote_type = 0 THEN 1 ELSE 0 END) TotalVoteValue
FROM    votes
-- WHERE    ....
-- ORDER    ....

当您说按总 vote_value 排序时——实际上没有意义,因为结果中的总行数只有一。

您也可以将其包装在子查询中,

SELECT  TotalVotes,
        TotalVoteOne, 
        TotalVoteZero,
        (TotalVoteOne - TotalVoteZero) AS TotalVoteValue
FROM
(
    SELECT  COUNT(*) TotalVotes,
            SUM(CASE WHEN vote_type = 1 THEN 1 ELSE 0 END) TotalVoteOne,
            SUM(CASE WHEN vote_type = 0 THEN 1 ELSE 0 END) TotalVoteZero
    FROM    tableName
    -- WHERE    ....
    -- ORDER    BY TotalVoteValue DESC
) a
于 2013-09-21T22:17:08.327 回答
1

尝试从这样的事情开始:

SELECT SUM(CASE WHEN votetype = 1 then 1 else 0 end) AS vote_count_1,
       SUM(CASE WHEN votetype = 0 then 1 else 0 end) AS vote_count_0
    FROM votes 
    WHERE <some condition>
    ORDER BY vote_count
于 2013-09-21T22:21:06.337 回答
0
$query = "SELECT *FROM  votes  WHERE vote_type=1 || vote_type=0";
$result = mysql_query($query);
$row =  mysql_fetch_assoc($result);

$WhereVoteIsOne=$row['vote_type'];

foreach ($WhereVoteIsOne as $votesCount) { echo $votesCount."<br/>";}
于 2013-09-21T22:23:59.900 回答