SQL组按现有行,删除它们,然后插入分组依据结果

时间:2017-03-01 21:33:49

标签: sql consolidation

我正试图找出一种方法,通过合并类似的条目来减小表格大小增长到惊人的大小。我已经得到了一个工作'Group By'查询,它根据我的意愿汇总数据,我只是不确定如何删除现有条目并根据该select语句插入新条目。我想最直接的方法是运行select,将这些结果保存到内存中,删除表条目,然后插入合并的条目。但这似乎效率低下并会使用大量内存,希望可能有一种方法可以执行一些sql魔法并立即实现。

这是我的'Group By'选择:

foreach ($slices->products as $slice) {
      $ID = $slice->ID;
      echo $ID;
  }

谢谢!

如果其他人碰到这样的事情,这个功能在非常高效的情况下完成整合:

select SUM(user_in), 
       SUM(user_out), 
       SUM(user_total), 
       name, 
       device_type, 
       device_os, 
       ownership, 
       host_name 
  FROM user_usage 
 GROUP BY name, 
          device_type, 
          device_os, 
          ownership, 
          host_name;

1 个答案:

答案 0 :(得分:1)

可能的解决方案是使用另一个聚合表(例如:user_usage_aggregated)。 定期运行查询并将输出写入聚合表。然后从user_usage中删除原始数据。

如果您想要总结数据,则需要更新聚合表而不是插入数据。