子查询返回多行mysql

子查询返回多行mysql,mysql,Mysql,以下查询必须返回所有客户信息,但不幸的是,子查询返回多行错误: SET @total=0; SET @amountDue=0; SELECT c.customer_name, l.paid_date, IF(@total=0,((SELECT ll.total_amount FROM payment_loan ll join payments_details le

以下查询必须返回所有客户信息,但不幸的是,子查询返回多行错误:

SET @total=0;    
SET @amountDue=0;
SELECT c.customer_name, 
        l.paid_date, 
        IF(@total=0,((SELECT ll.total_amount    
                    FROM payment_loan ll 
                    join payments_details le on ll.loan_id=le.loan_id)-        
                    (SELECT ll.installment_amount_month 
                    FROM payment_loan ll 
                    join payments_details le on ll.loan_id=le.loan_id)*
                    (SELECT ll.total_installments        
                    FROM payment_loan ll 
                    join payments_details le on ll.loan_id=le.loan_id)),
                    (SELECT ll.installment_amount_month 
                    FROM payment_loan ll 
                    join payments_details le on ll.loan_id=le.loan_id)) AS AmountDue,
        @amountDue:=@amountDue+(SELECT IF(@total=0,((SELECT ll.total_amount 
                                                    FROM payment_loan ll 
                                                    join payments_details le on ll.loan_id=le.loan_id)-
                                                    (SELECT ll.installment_amount_month 
                                                    FROM payment_loan ll 
                                                    join payments_details le on ll.loan_id=le.loan_id)*
                                                    (SELECT ll.total_installments 
                                                    FROM payment_loan ll 
                                                    join payments_details le on ll.loan_id=le.loan_id)),
                                                    (SELECT ll.installment_amount_month 
                                                    FROM payment_loan ll 
                                                    join payments_details le on ll.loan_id=le.loan_id)) )as ComulativeDue, 
        l.amount AS AmountPaid, 
        @total := @total +l.amount AS comulativePaid,
        (@total/@amountDue ) as percentage 
FROM payments_details l 
join customer c on c.customer_id= l.customer_id 
where c.customer_id=l.customer_id 
GROUP BY l.paid_date 
ORDER BY l.paid_date 
DESC LIMIT 1 ;

它看起来更像一个段落,而不是一个查询。有许多子查询。您确定所有的表都只返回一行吗?如果需要,不应该返回一行。对于所有的表,添加1可以发布表声明和一些示例数据。但从逻辑上看,您的子查询似乎都在检查贷款的付款情况,我希望贷款有很多付款。因此,每个子查询将返回多行。此外,子查询甚至不会检查它们是否为同一客户付款。