我的问题与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
答案 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"
最后放下临时表。