0

嗨,我有一张桌子如下:

用户表

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

我想知道如何从 id = 1 的列 val1,val2,val3 中计算值?这意味着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 

感谢帮助。

4

2 回答 2

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上查看。

于 2012-10-22T17:31:02.743 回答
2

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

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

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

于 2012-10-22T17:34:13.880 回答