【问题标题】:MySQL sum of table sums with different where clauses具有不同 where 子句的表总和的 MySQL 总和
【发布时间】:2012-05-10 17:14:26
【问题描述】:

尝试对来自不同表的多个总和求和,每个表具有不同的 where 条件。

这是我的 3 个总和:

SELECT SUM(1column2) FROM table1 WHERE 1column1 = '0';
SELECT SUM(1column4) FROM table1 WHERE 1column3 = '0';
SELECT SUM(2column2) FROM table2 WHERE 2column1 = '0' AND 2column3 = 'w' AND 2column4 != 'f';

结果必须是(first sum) - (second sum) - (third sum)

【问题讨论】:

    标签: mysql sum where multiple-tables


    【解决方案1】:

    MySQL 支持基本的操作符,所以你应该可以做一些简单的事情:

    SELECT (SELECT SUM(1column2) FROM table1 WHERE 1column1 = '0') - (SELECT SUM(1column4) FROM table1 WHERE 1column3 = '0') - (SELECT SUM(2column2) FROM table2 WHERE 2column1 = '0' AND 2column3 = 'w' AND 2column4 != 'f');
    

    我确信这可以优化,但这应该可以满足您的需求(如果没有更好的关系信息,优化会很困难)。

    【讨论】:

    • 感谢您的尝试。仍然显示“未选择数据库”。
    • 三个表都在同一个数据库中吗?你试过“使用”吗?
    • 天哪,这对我来说是愚蠢的。没有在 phpmyadmin 中选择数据库。
    【解决方案2】:

    您可以将这些查询中的每一个作为执行所需求和的外部查询的子查询:

    SELECT
        (SELECT SUM(1column2) FROM table1 WHERE 1column1 = '0')
      - (SELECT SUM(1column4) FROM table1 WHERE 1column3 = '0')
      - (SELECT SUM(2column2) FROM table2 WHERE 2column1 = '0' 
          AND 2column3 = 'w' AND 2column4 != 'f');
    

    【讨论】:

    • 感谢您的尝试,但“未选择数据库”。伙计,我希望这很容易。
    • @user1382306:如果你没有选择你想要的数据库,你原来的SELECT语句也不会成功。连接时指定数据库名称,或发出USE 语句。
    • 天哪,这对我来说是愚蠢的。没有在 phpmyadmin 中选择数据库。
    • @user1382306:很高兴听到你解决了这个问题。仅供参考,如果他们解决了您的问题,您应该 accept answers,如果他们有用或有帮助,您应该 upvote 他们。
    猜你喜欢
    • 1970-01-01
    • 2014-02-01
    • 1970-01-01
    • 2020-10-13
    • 2012-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多