根据group by子句插入多个表

时间:2015-02-19 15:35:26

标签: mysql sql

我的问题与MySQL有关。 假设我的表名为"形状"它包含各种形状。

我可以按如下方式获得每个形状类型的计数:

select day, shape_type, count(*) from shapes group by day, shape_type

在我的特定设置中,数据库已经存在,而在管道的另一端,我有一组表,如下所示:

sum_square_day
sum_rectangle_day
sum_circle_day

是否可以让SQL只从形状中查询一次并插入到其他表中?

换句话说,我知道我可以做3个陈述:

    INSERT INTO sum_square_day (day,count)
    SELECT day,count FROM (
      SELECT day, count(*) from shapes where shape_type = "square") AS tmp_shapes

然后是圆形和矩形,但这需要对形状进行3次。

我可以对shape_type分组的形状做一个语句,然后利用结果将它放在每个相应的表中吗?

THX

1 个答案:

答案 0 :(得分:1)

没有选择只通过一个声明解决它,但为了获得更好的性能,我建议如下:

使用原始选择的结果创建临时表。这样,COUNT和GROUP BY命令(花费更多时间)将只执行一次。

select day, shape_type, count(*) 
into temp_table 
from shapes 
group by day, shape_type

然后执行3个INSERT命令:

INSERT INTO sum_square_day (day,count)
SELECT day,count 
FROM temp_table 
WHERE shape_type = "square"

最后放下临时表。