MySQL if then子句

时间:2012-08-07 13:38:12

标签: mysql if-statement sum

我总结了两个表中两列的行,如下所示:

SUM( tableA.age ) + sum( tableB.age) as 'Total Ages'

但在某些情况下,表A的结果为null,而表B的结果则不为。在这种情况下,我得到的总结果为null,虽然它类似于“NULL + 45”,实际上不是null。因此我认为使用sql语法的if子句是个好主意。但它不起作用我在尝试执行以下操作时遇到错误:

IF SUM( tableA.age ) IS NULL THEN 0 ELSE  SUM( tableA.age ) END IF + IF SUM( tableB.age ) IS NULL THEN 0 ELSE  SUM( tableB.age ) END IF

我该如何正确地做到这一点?

3 个答案:

答案 0 :(得分:1)

使用COALESCE()而不是复杂(和语法上不正确)IF语句,使用返回其第一个非null参数的{{3}},并指定0作为其第二个参数,因此当聚合时它默认为零SUM()为空

COALESCE(SUM(tableA.age), 0) + COALESCE(SUM(tableB.age), 0)

答案 1 :(得分:1)

当您认为该字段的值为IFNULL()时,只需使用NULL即可。

 SUM(IFNULL(tableA.age,0) ) 

您可以使用此MYSQL功能。

答案 2 :(得分:0)

使用IFNULL(column, 0)将列值转换为零:

SUM( IFNULL(tableA.age,0) ) + SUM( IFNULL(tableB.age,0) ) as 'Total Ages'