0

我总结了两个表中两列的行,例如:

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

但在某些情况下,表 A 的结果为空,而表 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

我将如何以适当的方式做到这一点?

4

3 回答 3

1

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

COALESCE(SUM(tableA.age), 0) + COALESCE(SUM(tableB.age), 0)
于 2012-08-07T13:41:25.993 回答
1

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

 SUM(IFNULL(tableA.age,0) ) 

您可以使用此MYSQL功能。

于 2012-08-07T14:00:39.123 回答
0

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

SUM( IFNULL(tableA.age,0) ) + SUM( IFNULL(tableB.age,0) ) as 'Total Ages'
于 2012-08-07T13:42:22.307 回答