从排序联接更新值

ecbunoof  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(267)

我有一个用户表,其中有一个新添加的字段 last_post_id .
我需要它与另一个posts表相对应,以便对于来自该用户的最新post,其id存储在新字段中。
我需要做一个updatesql查询来处理这个新字段的迁移。我怎么能这么做?
我尝试过很多尝试,例如:

UPDATE users u
        JOIN
        (
            SELECT user_id, created_at, post_id
            FROM posts
            WHERE user_id = u.id
            ORDER BY created_at DESC
            LIMIT 1
        ) p
        ON u.id = p.user_id
        SET u.last_post_id = p.id

问题是:在 WHERE ,我无法访问 u .
如果你有问题请告诉我。非常感谢你的帮助。

piv4azn7

piv4azn71#

如果 (user_id, created_at) 被定义为唯一的(或者如果我们假设它是唯一的),那么

UPDATE ( SELECT user_id, MAX(created_at) created_at
         FROM posts
         GROUP BY user_id ) mp 
JOIN posts p USING (user_id, created_at)
JOIN users u USING (user_id)
SET u.last_post_id = p.id

即使有多个职位拥有相同的职位,这也会起作用 created_at 价值,但它没有定义什么 posts.id 将用于更新。

相关问题