Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.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 加一列,减一列_Mysql_Sql - Fatal编程技术网

Mysql 加一列,减一列

Mysql 加一列,减一列,mysql,sql,Mysql,Sql,我有两个表insert1和received1 在insert1表中,有列,列名为充值\账户。 已接收表有一列,列名为已接收金额 我想总计充值\u amount-总已收金额作为应付款 recharge_Account Received_Amount dues 500 - 400 100 SELECT SUM(Account_recharge) AS `Total Recharge`, SUM(

我有两个表
insert1
received1
在insert1表中,有列,列名为
充值\账户
。 已接收表有一列,列名为
已接收金额

我想总计
充值\u amount-总已收金额
作为应付款

recharge_Account       Received_Amount     dues
500              -        400               100

SELECT
    SUM(Account_recharge) AS `Total Recharge`,
    SUM(Amount_Received) AS `Total Received`,
    SUM(Account_recharge) - SUM(Amount_Received) AS dues
FROM insert1 i1
INNER JOIN received1 r1

我无法进行精确计算。

您只需要一个连接条件,例如i1.id=r1.ins\u id上的
,以及针对空值的
COALESCE()
函数:

SELECT
    SUM(COALESCE(Account_recharge,0)) AS `Total Recharge`,
    SUM(COALESCE(Amount_Received,0)) AS `Total Received`,
    SUM(COALESCE(Account_recharge,0)) - SUM(COALESCE(Amount_Received,0)) AS dues
FROM insert1 i1
JOIN received1 r1 ON i1.id = r1.ins_id

我建议
union all
group by

SELECT SUM(ir.Account_recharge) AS `Total Recharge`,
       SUM(ir.Amount_Received) AS `Total Received`,
       SUM(ir.Account_recharge) - SUM(ir.Amount_Received) AS dues
FROM ((SELECT Account_recharge, NULL as Amount_Received
       FROM insert1 i1
      ) UNION ALL
      (SELECT NULL as Account_recharge, Amount_Received
       FROM received1 r1
      ) 
     ) ir
实际上,
交叉连接也可以:

SELECT SUM(i.Account_recharge) AS `Total Recharge`,
       SUM(r.Amount_Received) AS `Total Received`,
       SUM(i.Account_recharge) - SUM(r.Amount_Received) AS dues
FROM (SELECT SUM(Account_recharge) as Account_recharge
      FROM insert1 i1
     ) i CROSS JOIN
     (SELECT SUM(Amount_Received) as Amount_Received
      FROM received1 r1
     ) r;

在这种情况下,关键是您需要在加入之前进行聚合。

据我所知,您不需要任何类型的加入。
您可以对每一列求和,然后返回子查询中的2个总计列以减去它们:

SELECT t.`Total Recharge`, t.`Total Received`,
  t.`Total Recharge` - t.`Total Received`  AS dues
FROM (
  SELECT
    (SELECT SUM(Account_recharge) FROM insert1) AS `Total Recharge`,
    (SELECT SUM(Amount_Received) FROM received1) AS `Total Received`
) AS t

你的连接键是什么,提供你的表结构你没有连接任何东西。所以你得到的是笛卡尔积(你真的不想要)表名是-insert1,另一个表名是-insert1received1@Jitendra库马尔:你最后的评论没有帮助。如果您想引起某个特定贡献者的注意,请在您的评论中的某个地方用“@”作为其用户名的前缀。我希望recharge_account-received_amount=作为应付款可能正确(ish),但问题中没有证据表明可以进行联接。@P.Salmon好吧,只是对表结构的猜测。联接条件通常会产生错误,因为您没有共享表结构@Jitendra Kumar