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

合体は SQL ANSI 定義関数であるため、他の DBMS でも機能することに注意してください。を使用できますIFNULL()が、これは MySQL でのみ機能します。

于 2012-10-22T17:34:13.880 に答える