Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在mysql中如何从子查询返回零而不是null_Mysql_Sql - Fatal编程技术网

在mysql中如何从子查询返回零而不是null

在mysql中如何从子查询返回零而不是null,mysql,sql,Mysql,Sql,我创建了一个查询,当从子查询返回null时,我希望返回0,我使用了IFNULL函数,但最后仍然得到null。下面是一个类似的查询,请帮忙,不知道该怎么办。(注:我用电话写了这篇文章,所以mu格式化可能看起来不好,对不起) 试试这个: SELECT t1.id, t1.Amount, t1.parent, IF(SUM(t2.amount) IS NULL, 0 ,SUM(t2.amount)) AS amount FROM transactions t2 WHERE t1.`id` =

我创建了一个查询,当从子查询返回null时,我希望返回0,我使用了IFNULL函数,但最后仍然得到null。下面是一个类似的查询,请帮忙,不知道该怎么办。(注:我用电话写了这篇文章,所以mu格式化可能看起来不好,对不起)

试试这个:

SELECT t1.id, t1.Amount, t1.parent, 
   IF(SUM(t2.amount) IS NULL, 0 ,SUM(t2.amount)) AS amount FROM transactions t2 WHERE t1.`id` = t2.parent GROUP BY t2.parent ) AS AmountRepaid, 
  ( SELECT CASE WHEN CAST(SUM(t3.amount) AS DECIMAL) > CAST(t1.amount AS DECIMAL) THEN "Over" WHEN CAST(SUM(t3.amount) AS DECIMAL) = CAST(t1.amount AS DECIMAL) THEN "Complete" ELSE "Incomplete" END FROM transactions t3 WHERE t1.`id` = t3.Parent GROUP BY t3.Parent ) AS PaymentStatus 
  FROM transactions t1 WHERE t1.`Parent` IS NULL;

尝试使用以下方法:

SELECT t1.id, t1.Amount, t1.parent, 
       @Total := IFNULL( ( SELECT SUM(t2.amount) AS amount FROM transactions t2 WHERE t1.`id` = t2.parent GROUP BY t2.parent ), 0) AS AmountRepaid, 

@jamesokpegorge:在子查询中使用
groupby
,因此在本例中,该子查询可以返回0行(如果没有
t1.id=t2.parent
),因此在本例中
@total
为空<代码>分组依据此处无效,因为您总是只选择一个组。因此,您可以删除GROUP BY以使用您的查询或我的答案中的use way。
SELECT t1.id, t1.Amount, t1.parent, 
       @Total := IFNULL( ( SELECT SUM(t2.amount) AS amount FROM transactions t2 WHERE t1.`id` = t2.parent GROUP BY t2.parent ), 0) AS AmountRepaid,