我总结了两个表中两列的行,如下所示:
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
我该如何正确地做到这一点?
答案 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'