我正在使用DB,其中有人这样做:
有一个名为VOTE的字段存储一个upvote或downvote,然后是一堆关于投票的元数据.
这个表中有一个名为UP的列,它是BOOL,表示"这是一个Upvote吗?" 如果条目是Upvote,则其值为1,但如果条目为0,则条目为Downvote.
因此,当我在此表上运行查询时,我想创建一个总和,将1视为+1,将0视为-1,因此,如果每个中有5个,则最终为0.
在单个命令中有没有很好的MYSQL方法呢?也许用这个"IS IT UPVOTE?"设计表格是非常糟糕的.布尔值,也许整个表必须重新设计?
只需使用case声明:
select sum(case when `up` = 1 then 1 when `up` = 0 then -1 end)
Run Code Online (Sandbox Code Playgroud)
我的意思是,你可以得到幻想,并做这样的事情:
select sum(2 * `up` - 1)
Run Code Online (Sandbox Code Playgroud)
但这是不可理喻的.
甚至:
select sum(`up` = 1) - sum(`up` = 0)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
55 次 |
| 最近记录: |