你好我有一张表如下:
用户表
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
感谢您的帮助。
答案 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。