对mysql表中的两列或多列求和,但省略null字段
如何对两列或三列求和,但如果任何列为NULL,则不应影响sum的值。 如果将所有列添加到一起,则返回NULL 下面是我正在尝试处理的表的示例对mysql表中的两列或多列求和,但省略null字段,mysql,sql,database,Mysql,Sql,Database,如何对两列或三列求和,但如果任何列为NULL,则不应影响sum的值。 如果将所有列添加到一起,则返回NULL 下面是我正在尝试处理的表的示例 id col1 col2 col3 total 1 2 3 5 2 10 5 NULL 3 2 NULL NULL 这就是我尝试的问题 SELECT id,col1,col2,col3, (col1+col2+col3) AS Total FROM test_table; 若并没有空列
id col1 col2 col3 total
1 2 3 5
2 10 5 NULL
3 2 NULL NULL
这就是我尝试的问题
SELECT id,col1,col2,col3, (col1+col2+col3) AS Total FROM test_table;
若并没有空列,这个查询可以很好地工作,但若有空列,那个么添加了空的数字就变成了空,结果是空的
下面是我添加的结果屏幕截图
在上图中,若sum中的任何一列都有NULL,那个么我在Total列中得到NULL。
但结果应该类似于10,15,2,与id有关。修改select语句以排除空值。一种方法是使用函数:
SELECT id,col1,col2,col3, (IFNULL(col1,0)+IFNULL(col2,0)+IFNULL(col3,0)) AS Total
FROM test_table;
使用合并将空值替换为0。我更喜欢
合并。根据我的经验,它与数据库无关,其中asisnull
、ifnull
、nvl
等都是特定于数据库的
SELECT col1,col2,col3, (coalesce(col1,0)+ coalesce(col2,0)+ coalesce(col3,0)) as total from test_table;
在这种情况下,您需要使用IsNull(列,0)来确保它始终至少为0
按id从测试表组中选择col1、col2、col3、sum(isnull(col1,0)+isnull(col2,0)+isnull(col3,0))作为总计 合并每一列,谢谢。事实上,今天的采访中有人问我这个问题,我当然回答不了。。我试图在互联网上找到答案,但我想我没有用正确的词来搜索,这就是为什么我发布了这个问题。谢谢,成功了。