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

标签 sql mysql

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

id, date, stock_id, value

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

我如何为每个 stock_id 每天删除除最后一行以外的每一行?

最佳答案

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

DELETE FROM StockQuotes
WHERE id NOT IN (
    SELECT MAX(id)
    FROM StockQuotes
    GROUP BY stock_id, DATE(`date`)
)

假设 id 是一个按顺序自动编号的字段,而 date 是一个至少包含日期的日期时间字段,但我包含小时、分钟、秒等.还有。

关于sql - 如何删除每天除最后一行以外的每一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2790738/

相关文章:

mysql - 简短的 sql 挑战,结果集上有多个下一行,带有 group by 和 count

sql - Sql Server 2012 中一个查询的平均值和中位数

php - 使用 Ajax 或 JavaScript 选择下拉列表选项后在同一页面上执行 PHP 脚本

php - 从mysql中提取数据的最有效方法是什么,使其格式如下:

用于更新 MySQL 表中的多个列的 PHP 脚本

php - 如何将唯一 ID 附加到 json 数组 - OctoberCMS/Laravel

java - 自动持久化一个复杂的 Java 对象

sql server数据透视表查询

sql - 优化PostgreSQL以进行快速测试

mysql - SQL 查询获取平均值,如下例或如何使用 hibernate 标准