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

MySQL技术需求:用post表数据更新thread表lastpid与lastuid字段

解决方案

这就给你搞定这个更新需求,直接用关联更新结合子查询就能实现,具体MySQL语句如下:

UPDATE thread t
INNER JOIN (
    -- 先匹配每个tid的最新帖子,拿到对应的pid和uid
    SELECT p.tid, p.pid, p.uid
    FROM post p
    INNER JOIN (
        -- 分组获取每个tid下的最大pid(也就是最新帖子的pid)
        SELECT tid, MAX(pid) AS max_pid
        FROM post
        GROUP BY tid
    ) max_posts 
        ON p.tid = max_posts.tid 
        AND p.pid = max_posts.max_pid
) latest_posts 
    ON t.tid = latest_posts.tid
SET 
    t.lastpid = latest_posts.pid,
    t.lastuid = latest_posts.uid;
逻辑拆解
  • 最内层子查询:SELECT tid, MAX(pid) AS max_pid FROM post GROUP BY tid
    按tid分组,找出每个主题下pid最大的帖子——一般pid是自增主键,所以最大pid就对应该主题的最新帖子。
  • 中间关联层:把上面的结果和post表关联,通过tid和max_pid精准匹配,拿到这条最新帖子对应的uid。
  • 最终更新:将thread表和整理好的最新帖子数据按tid关联,批量更新lastpid和lastuid字段。

如果你的post表中pid是全局唯一的自增主键,这个语句可以确保每个tid只匹配到一条最新记录,不会出现更新异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:50:00