1

我有一张有五个 tinyint 列的表。

如果我对一行进行查询,我会得到如下结果:

select flag1, flag2, flag3, flag4, flag5 from mytable where whatever;

结果集(图片)

我需要的是得到总和,就好像它们是整数一样。在这个例子中,输出是四个一和一个零,所以我想得到一个 4。

此查询不起作用:

select sum(flag1, flag2, flag3, flag4, flag5) from mytable where whatever;

这也不是:

select sum(flag1, flag2, flag3, flag4, flag5) from mytable where whatever;
4

4 回答 4

3

您可以使用+运算符对一行的值求和。

SELECT flag1 + flag2 + flag3 + flag4 + flag5
       FROM mytable;
于 2018-07-06T00:13:56.927 回答
3
select sum(flag1 + flag2+ flag3+ flag4+ flag5) sumflag  from mytable 

结果:

| sumflag |
|---------|
|       4 |

测试演示


DDL:

CREATE TABLE mytable
    (`flag1` tinyint, `flag2` tinyint, `flag3` tinyint, `flag4` tinyint, `flag5` tinyint)
;

INSERT INTO mytable
    (`flag1`, `flag2`, `flag3`, `flag4`, `flag5`)
VALUES
    (1, 1, 1, 0, 1)
;
于 2018-07-06T00:18:06.363 回答
1

您必须将tinyints 转换为ints 才能使用SUM()。尝试这个:

select sum(cast (flag1 as int),cast (flag2 as int) ...
于 2018-07-06T00:15:23.010 回答
1

选择 sum(flag1+flag2+flag3+flag4+flag5 ) 作为总数,id 从 mytable group by id

于 2018-07-06T05:51:39.083 回答