【发布时间】:2011-10-29 18:15:22
【问题描述】:
请看这张图
http://i.stack.imgur.com/A2RB2.jpg
我想得到
- 桌子上的钱来了
- 请假总金额
- 使用 id 内部连接 emp
这是我的问题
SELECT uid,SUM(money) FROM come
INNER JOIN emp ON(come.uid = emp.id)
WHERE emp.statue=1
GROUP BY come.uid
UNION
SELECT uid,SUM(money) FROM `leave`
INNER JOIN emp ON ( leave.uid = emp.id )
GROUP BY leave.uid
结果就是这张图片
【问题讨论】:
-
我会使用 UNION ALL 而不是 UNION(应该更快,因为它不需要排序)
-
@Kevin,UNION 不会排序,它会删除重复的行(所以 UNION ALL 应该更快,但出于不同的原因 ^_^)
-
@jswolf19 我承认它可能不会,但有时会:dev.mysql.com/doc/refman/5.5/en/index-merge-sort-union.html 我想唯一可以确定的方法是检查你的执行计划。