【问题标题】:Mysql UNION and GROUP BYMysql UNION 和 GROUP BY
【发布时间】:2012-09-11 12:35:52
【问题描述】:

我需要根据日期和 2 个值将 2 个表加在一起。

这给了我所有信息的列表 - 很好。

$query = (SELECT  date, debit, credit , note  FROM proj3_cash )
UNION 
(SELECT  settle, purch, sale, issue FROM proj3_trades)
ORDER BY date";

现在我需要对两张表中的每日总计信息进行 GROUP。

$query = "(SELECT  date, SUM(debit), SUM(credit)FROM proj3_cash  GROUP BY date)
UNION 
(SELECT  settle as date, SUM(purch) as debit, SUM(sale) as credit FROM proj3_trades GROUP BY date)
ORDER BY date";

很好,但是如果每个表中有相同日期的内容,我会得到:

date        SUM(debit)    SUM(credit)
--------------------------------------
2010-12-02  0.00          170.02 
2010-12-02  296449.91     233111.10 

如何将两者归为同一天?

如果我在最后添加 GROUP BY - 我只会收到错误消息。还是应该通过 JOIN 来完成?

【问题讨论】:

    标签: mysql join group-by union


    【解决方案1】:

    您可以使用派生表实现此目的:

    SELECT date, SUM(debit), SUM(credit)
    FROM
    (
        SELECT  date, debit, credit
          FROM proj3_cash
        UNION ALL
        SELECT  settle as date, 
                purch as debit, 
                sale as credit 
          FROM proj3_trades
    ) derivedTable
    GROUP BY date
    ORDER BY date
    

    我已将 UNION 更改为 UNION ALL,因为 union 将消除两个表中的重复项。

    【讨论】:

    • 嗨,我必须根据创建日期创建一个具有最新记录的视图,联合中的两个表都有记录 1 记录每个相同的 customerId 但在从这个连接开发的视图中我只需要最最近的一个。我对 GROUP BY customerid 有类似的看法
    猜你喜欢
    • 1970-01-01
    • 2017-06-09
    • 1970-01-01
    • 2012-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多