旋转用户统计信息

时间:2011-08-30 13:03:49

标签: mysql query-optimization

假设我有一个包含以下模式的表:

int pitchId, int pitcherId, int pitchType, timestamp pitchTimeStamp

我们跟踪投手投球的每一个投球。现在让我们说,我想只包括最后100个音高并清除每个pitcherId的最后100个音高以外的任何音高。我知道一个可能的解决方案是循环遍历PHP中的每个pitcherId并找到过去pitcherId的第100个pitchId并删除任何旧的。{/ p>

但是,我认为必须有一种更有效的方法,通过存储过程或在我的脑海中,最好是触发器。

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用这样的SQL语句。

DELETE FROM pitch p 
WHERE NOT (p.pitchid IN 
          (SELECT p2.pitchid FROM pitchid p2 ORDER BY p2.pitchid DESC LIMIT 100))