【发布时间】:2014-10-31 03:04:16
【问题描述】:
我有以下疑问:
SELECT adate, sum(b), sum(c), sum(d)
FROM
(
(
SELECT a.adate, sum(b), sum(c), sum(d)
FROM one
WHERE a='aa'
GROUP BY a.adate
)
UNION ALL
(
SELECT a.adate, sum(b), sum(c), sum(d)
FROM two
WHERE a='aa'
GROUP BY a.adate
)
UNION ALL
(
SELECT a.adate, sum(b), sum(c), sum(d)
FROM three
WHERE a='aa'
GROUP BY a.adate
)
UNION ALL
(
SELECT a.adate, sum(b), sum(c), sum(d)
FROM four
WHERE a='aa'
GROUP BY a.adate
)
) a
GROUP BY a.adate
我基本上想对四个表中的字段求和。
这是一个很好的查询吗?
有更好的方法吗?
【问题讨论】:
-
为什么会有四个结构相同的表?
-
四表统计
-
将所有四个表放在一个表中,因为它代表相同类型的信息,并在该表中添加另一列以引用
('one','two','three','four')。这样,您的数据库结构良好,检索数据也很容易。 -
支付统计有四个不同统计的表。告诉我们比 union all 更有效的查询
-
UNION ALL是高效的,但你的表结构不是。