如何删除每天除最后一行以外的每一行?

A B*_*A B 4 mysql sql

我有一个股票报价表,看起来像这样:

id,date,stock_id,value

每个stock_id每天都有几行(每五分钟自动更新一次),所以目前表格相当大.

如何为每个stock_id删除每一行,但每天最后一行?

Dat*_*han 10

其他答案并不确保stock_id每天至少保留一条记录.以下应该做你想要的.

DELETE FROM StockQuotes
WHERE id NOT IN (
    SELECT MAX(id)
    FROM StockQuotes
    GROUP BY stock_id, DATE(`date`)
)
Run Code Online (Sandbox Code Playgroud)

假设id是一个顺序自动编号的字段,并且date是至少包含日期的日期时间字段,但我也包含小时,分钟,秒等.