2012-10-22 59 views
0

您好,我有一個表如下:MySQL的總計數muliple列

用戶表

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

我想知道如何從列計數值VAL1,VAL2,VAL3其中id = 1 ?這意味着 爲id = 1總數是7和id = 2總數是1最讓例子計數整個列所有ids.My解決方案如下似乎沒有得到首選結果

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

它看起來像你需要總結每個用戶ID的列值。這將做到:

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

注意,合併是一個SQL ANSI定義的函數,因此,它會在其他DBMS正常工作。您可以使用IFNULL(),但這隻會在MySQL中起作用。

+0

@andrian謝謝你的朋友你的解決方案也可以工作! – d3bug3r

6

你可以簡單地添加列在一起:

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

看到它的sqlfiddle


UPDATE

要排除NULL值,可以使用MySQL的IFNULL()功能:

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

看到它的sqlfiddle

+0

一些val有null我怎麼能不包括在計數導致結果返回NULL.Thanks – d3bug3r

+0

@zlippr:使用MySQL ['IFNULL()'](http://dev.mysql.com/doc/en /control-flow-functions.html#function_ifnull)函數,如以上更新中所示。 – eggyal

+0

感謝buddy它爲我工作! – d3bug3r