mysql共计多列

时间:2012-10-22 17:30:14

标签: mysql sql

你好我有一张表如下:

用户表

id  val1 val2 val3
1    2    3    2
2    0    0    1

我想知道如何计算val1,val2,val3列的值,其中id = 1?意思是 对于id = 1总计将为7,对于id = 2总计将为1.大多数SO示例计算所有ID的整个列。我的解决方案如下似乎不是首选结果

select count(*) as tot
from (
select val1 as total from user
where id=1
union
select val2 as total from user
where id=1
union
select val3 as total from user
where id=1
) as x 

感谢您的帮助。

2 个答案:

答案 0 :(得分:6)

您可以简单地将列添加到一起:

SELECT val1 + val2 + val3 FROM user WHERE id = 1

sqlfiddle上查看。


<强>更新

要排除NULL值,请使用MySQL的IFNULL()函数:

SELECT IFNULL(val1,0) + IFNULL(val2,0) + IFNULL(val3,0) FROM user WHERE id = 1

sqlfiddle上查看。

答案 1 :(得分:2)

看起来您需要对每个用户ID的列值求和。这样做:

select id, coalesce(val1, 0) + coalesce(val2, 0) + coalesce(val3, 0) 
from user

请注意,coalesce是SQL ANSI定义的函数,因此,它也适用于其他DBMS。您可以使用IFNULL(),但这只适用于MySQL。