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