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

MySQL中如何使用DISTINCT与MAX获取各线程ID对应的最新日期

正确的MySQL查询语句解法

你原来的语句只返回一行的核心原因是:MAX()属于聚合函数,当没有搭配GROUP BY子句时,MySQL会把整个表当作一个单一分组计算,最终只会得到全局的最大日期,DISTINCT在这里无法按BOH_ThreadId拆分分组结果。

要获取每个唯一BOH_ThreadId对应的最大BOH_Date,正确写法是用GROUP BY按BOH_ThreadId分组,再对每个分组应用MAX()函数:

SELECT BOH_ThreadId, MAX(BOH_Date) AS Latest_Date
FROM your_table_name
GROUP BY BOH_ThreadId;

替换语句中的your_table_name为你实际的表名,执行后会得到预期结果:

BOH_ThreadIdLatest_Date
Banana2024-04-25
Apple2024-04-25

如果需要获取每个BOH_ThreadId最大日期对应的完整行数据(比如还有其他字段需要展示),可以用窗口函数ROW_NUMBER()实现:

SELECT BOH_ThreadId, BOH_Date AS Latest_Date
FROM (
    SELECT 
        BOH_ThreadId, 
        BOH_Date,
        ROW_NUMBER() OVER (PARTITION BY BOH_ThreadId ORDER BY BOH_Date DESC) AS rn
    FROM your_table_name
) t
WHERE rn = 1;

这种方法适合更复杂的场景,同样能精准匹配每个分组的最新日期记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 06:47:39