【发布时间】:2017-02-08 14:19:06
【问题描述】:
我有 2 张桌子 AmountIn 和 AmountOut。
第一个表Amountin 看起来像:
AmountIn
+--------+--------------+-----------+
| account| date | AmountIn |
+--------+--------------+-----------+
| A | 2017/2/6 | 200 |
| A | 2017/2/5 | 100 |
| A | 2017/2/5 | 500 |
| B | 2017/2/1 | 1000 |
| B | 2017/2/1 | 2000 |
| C | 2017/1/20 | 25 |
+--------+----+---------+-----------+
第二个看起来像:
AmountOut
+--------+--------------+-----------+
| account| date |AmountOut |
+--------+--------------+-----------+
| A | 2017/2/8 | 200 |
| A | 2017/2/7 | 100 |
| A | 2017/2/6 | 500 |
| B | 2017/2/2 | 1000 |
| B | 2017/2/1 | 2000 |
| C | 2017/1/20 | 25 |
+--------+----+---------+-----------+
现在我想要一个显示如下结果的查询:
ForAccountA
+--------+--------------+----------+-----------+------------+
| account| date | AmountIn | AmountOut | Balancy |
+--------+--------------+-------- -+-----------+------------+
| A | 2017/2/5 | 500 | 0 | 500 |
| A | 2017/2/5 | 100 | 0 | 600 |
| A | 2017/2/6 | 0 | 500 | 100 |
| A | 2017/2/6 | 200 | 0 | 300 |
| A | 2017/2/7 | 0 | 100 | 200 |
| A | 2017/2/8 | 0 | 200 | 0 |
+--------+----+---------+----------+-----------+------------+
查询中的date field 是两个表中日期的并集,余额计算为:
last balance + AmountIn - AmounOut
【问题讨论】:
-
您需要
JOIN。UNION不会在这里工作 -
感谢您的快速回复,但如何加入并保持日期字段作为一个从两个表中获取日期
-
看起来像一个完全外连接。但我不认为 MySQL 支持它。
-
FULL OUTER 不直接支持,但可以使用选择加入查询联合所有选择反向加入查询来完成,其中倒置_left.joining_column 为空
-
查询会是什么样子?