如何在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;