我有两个表Cars2016和Cars2015,它们具有完全相同的列。
我想简单地连接这两个表来创建这种查询:
SELECT Mark, COUNT(Models) FROM (Cars2015 UNION Cars2016) GROUP BY Mark
Run Code Online (Sandbox Code Playgroud)
此查询旨在了解每个标记有多少模型,累计 2015 年和 2016 年。
我怎样才能有效地做到这一点?
谢谢 !
可能最有效的方法是在每个表中计数,然后将其合并并求和。
SELECT Mark, SUM(count) AS count
FROM (
SELECT Mark, COUNT(*) AS count
FROM Cars2015
GROUP BY Mark
UNION ALL
SELECT Mark, COUNT(*) AS count
FROM Cars2016
GROUP BY Mark
) AS u
GROUP BY Mark
Run Code Online (Sandbox Code Playgroud)
如果您Mark在表中有索引,则子查询应该非常有效。然后它对包含聚合的相对较小的中间表进行联合,然后组合它们。
另一种选择是使用MERGE存储引擎,它允许您创建一个包含其他表并集的虚拟表:
CREATE TABLE Cars (
-- column names here
) ENGINE=MERGE UNION=(Cars2015, Cars2016);
SELECT Mark, COUNT(*)
FROM Cars
GROUP BY Mark;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7156 次 |
| 最近记录: |