mysql - 通过计算sql中其他列的SUM差值将值插入到第三列

标签 mysql xampp

我有一个查询运行正常,但没有创建所需的结果,我希望此查询通过取第二个总和的差值在表的第三列中插入值 (PAYABLE_AMOUNT_DUE)列 (PAYABLE_AMOUNT) 基于其 ACTION 字符串 (PAYABLE_ACTION)。我的表格结构和值如下所示,

TABLE PAYABLES

我使用的逻辑如下,但它不会将所需的值插入到第三个表中(可以看到它始终为0)

查询

INSERT INTO `payables`(`payable_action`, `payable_amount`, `payable_amount_due`) 
VALUES ('Cash Closed', '300', 
      '(SELECT SUM(payable_amount)
               FROM payables
               WHERE payable_action = 'Cash In') -
       (SELECT SUM(payable_amount)
               FROM payables
               WHERE payable_action = 'Cash Closed')
        ')

正如您所看到的,它在 payable_amountpayable_action 中插入了值,但不在 payable_amount_due 中插入了值,我不知道为什么以及如何插入我做吗?谢谢

最佳答案

你可以尝试:

INSERT INTO payables( payable_action, payable_amount, payable_amount_due ) 
SELECT 'Cash Closed', '300', 
        SUM( payable_amount * (payable_action='Cash In' ) ) 
          - SUM( payable_amount * (payable_action='Cash Closed') ) 
FROM payables

编辑:这一行的作用是什么?

SUM( payable_amount * ( payable_action='Cash In' ) )

对于每一行(payable_action='Cash In')返回 bool 值,但mysql只有0或1的 bool 值,所以我们将添加payable_action * 1总和code> 对于满足操作条件的行,payable_action * 0 对于其他行。所以基本上只有那些采取适当行动的人才算数。

关于mysql - 通过计算sql中其他列的SUM差值将值插入到第三列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17152550/

相关文章:

apache - Xampp 虚拟主机 : Wildcard domains and sub-domains

php - Mysql服务器数据插入错误

mysql - 如何将日期添加到mysql错误日志

mysql - 根据具有匹配 ID 的另一个表的列更新一个表的列

PHP CRON 电子邮件发送 CPU 密集型

mysql - SQL 中使用 CAST 运算符的变量类型转换

macos - mac os 上的 XAMPP - Apache 无法启动

apache - XAMPP在窗口中不起作用

mysql - 是否可以在MySql中封装一个表

mysql - 订单记录如果在其他表