我有一张名为'投票'并且有一个名为status的列。状态可以具有真值或假值。
我想找到减法结果。像这样的东西
select (select count(*) from vote where status=true) -
(select (*) from vote where status=false)
上面的sql给出错误:" *"
附近的语法不正确实现结果的正确语法是什么。
由于
答案 0 :(得分:3)
试试这个:
select sum(
(case when status='true' then 1 else -1 end)
)
from table
答案 1 :(得分:1)
您错过了在第二个选择中写入计数
select count(*)
而不是
select (*)
所以你的查询将成为
select
(select count(*) from vote where status = 'true') - (select count(*) from vote where status = 'false')
如果数据类型为bit,请尝试:
select
(select count(*) from vote where status = 1) - (select count(*) from vote where status = 0)
答案 2 :(得分:0)
这样的事情:
select sum(
(case when status='true' then 1 else 0 end)-
(case when status='false' then 1 else 0 end)
)
from vote