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

如何查询数据表中某一列各不同取值对应的最新记录

可行实现方案

1. 支持窗口函数的数据库(MySQL8.0+、PostgreSQL、SQL Server等)

用ROW_NUMBER()窗口函数实现,不需要提前知道所有vehicle取值,自动按分组取最新记录:

SELECT id, vehicle, 你需要的其他字段
FROM (
    SELECT 
        *,
        ROW_NUMBER() OVER (PARTITION BY vehicle ORDER BY id DESC) AS row_rank
    FROM 你的业务表名
) temp_table
WHERE row_rank = 1;

逻辑说明:PARTITION BY vehicle按车辆分组,ORDER BY id DESC把同组内自增id最大的最新记录排在最前,最后过滤出每组排名为1的记录即可。

2. 低版本MySQL(不支持窗口函数)

用子查询先捞每个vehicle对应的最大自增id,再关联原表取完整行数据,也不需要提前知晓vehicle取值:

SELECT t1.*
FROM 你的业务表名 t1
INNER JOIN (
    SELECT vehicle, MAX(id) AS max_id
    FROM 你的业务表名
    GROUP BY vehicle
) t2 ON t1.vehicle = t2.vehicle AND t1.id = t2.max_id;

MAX(id)返回null的常见原因

大概率是写法逻辑错误,比如直接写SELECT * FROM 表 WHERE id = (SELECT MAX(id) FROM 表 GROUP BY vehicle),子查询返回多个最大id值,用等于号匹配会失效;或是没有关联vehicle字段,全局最大id匹配不到对应分组的记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 21:54:04