假设我有一个包含以下模式的表:
int pitchId, int pitcherId, int pitchType, timestamp pitchTimeStamp
我们跟踪投手投球的每一个投球。现在让我们说,我想只包括最后100个音高并清除每个pitcherId
的最后100个音高以外的任何音高。我知道一个可能的解决方案是循环遍历PHP中的每个pitcherId并找到过去pitcherId
的第100个pitchId并删除任何旧的。{/ p>
但是,我认为必须有一种更有效的方法,通过存储过程或在我的脑海中,最好是触发器。
谢谢!
答案 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))