You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL如何查找表中字段最后一次更新值对应的记录

SQL查询字段最后一次更新对应记录的解决方案

核心思路

首先识别相邻日期的同产品库存值变化,筛选出所有发生值变动的记录,再取最新的一条即可。

方法1:窗口函数实现(支持MySQL 8.0+、PostgreSQL、Oracle等现代数据库,性能更优)

WITH stock_with_prev AS (
    SELECT 
        `entry date`,
        Product,
        Stock,
        -- 按产品分组,按日期排序,取上一条记录的库存值
        LAG(Stock) OVER (PARTITION BY Product ORDER BY `entry date`) AS prev_stock
    FROM 你的实际表名
),
stock_change_records AS (
    SELECT 
        `entry date`,
        Product,
        Stock
    FROM stock_with_prev
    -- 第一条记录无前置值,本身属于初始更新,也需纳入
    WHERE prev_stock IS NULL OR Stock != prev_stock
)
-- 取最后一次更新的记录
SELECT *
FROM stock_change_records
ORDER BY `entry date` DESC
LIMIT 1;

上述SQL运行后会返回示例数据中2021-01-02对应的记录,符合预期结果。如果需要查询多个产品的最后一次更新记录,只需去掉LIMIT 1,再对Product分组取最大日期即可。

方法2:自连接实现(兼容不支持窗口函数的低版本数据库)

SELECT t1.*
FROM 你的实际表名 t1
LEFT JOIN 你的实际表名 t2
    ON t1.Product = t2.Product
    AND t2.`entry date` = DATE_ADD(t1.`entry date`, INTERVAL 1 DAY)
-- 筛选库存发生变化的日期,或最新日期(若最新日期后无新记录)
WHERE t1.Stock != t2.Stock OR t2.`entry date` IS NULL
ORDER BY t1.`entry date` DESC
LIMIT 1;

注意:使用前请将代码中的你的实际表名替换为真实的表名。

内容的提问来源于stack exchange,提问作者Nonagon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 17:15:06