如何在mysql上分离布尔列值

如何在mysql上分离布尔列值,mysql,sql,Mysql,Sql,我有这张桌子 create table votes( candidate varchar(20), voteup bool ) 我想展示这样的东西 |candidate|vote ups(true)|vote downs(false)|vote points(true-false) |hitler |16 |104 |-88 |obama |119 |1 |118 我改

我有这张桌子

create table votes(
    candidate varchar(20),
    voteup bool
)
我想展示这样的东西

|candidate|vote ups(true)|vote downs(false)|vote points(true-false)
|hitler   |16            |104              |-88
|obama    |119           |1                |118
我改变了原来的答案,因为BOOL/TINYINT(1)可以包含-128到127之间的任何数字

您可以“滥用”布尔值在整数运算中计算为1和0的事实:

select candidate,
    sum(voteup) as 'vote up',
    sum(voteup=0) as 'vote down',
    sum(if(voteup,1,-1)) as 'vote points'
from votes
group by candidate;

用于匹配sql的新用例。什么是案例匹配?听起来你想要一个pivot:@user1625766:uhh,使用Google?BOOL和BOOLEAN在MySQL中是TINYINT(1)的同义词,所以你需要处理一个数字
select candidate,
    sum(voteup) as 'vote up',
    sum(voteup=0) as 'vote down',
    sum(if(voteup,1,-1)) as 'vote points'
from votes
group by candidate;