Mysql UNION 和 GROUP BY
Posted
技术标签:
【中文标题】Mysql UNION 和 GROUP BY【英文标题】:Mysql UNION and 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 来完成?
【问题讨论】:
【参考方案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 有类似的看法以上是关于Mysql UNION 和 GROUP BY的主要内容,如果未能解决你的问题,请参考以下文章