MySQL 获取最大时间戳和关联键

MySQL Get max TimeStamp and associated key

我有 2 个表,PostsReplies。它们都包含插入数据时的 PostIDTimeStamp

在单个查询中,我想知道两个表中的最新条目,以及该条目的关联 PostID

我知道在 MSSQL 中我可以使用子查询来做到这一点,如下所示;

SELECT
    PostID,
    MAX(TimeStamp) as newTimeStamp
FROM (
    SELECT
        PostID as PostID
        ,TimeStamp as TimeStamp
    FROM
        Posts
    UNION ALL
    SELECT
        PostID as PostID
        ,TimeStamp as TimeStamp
    FROM
        Replies
)
GROUP BY
    PostID
ORDER BY
    newTimeStamp DESC

我已经研究了 20 分钟了 - 我知道这是一个简单的解决方案。

澄清一下,PostIDPosts 的 PK,PostIDReplies 的 FK。我想知道,所有 PostID 上最近的 activity,按照 TimeStamp

的降序排列

这个怎么样?

SELECT 
   , Posts.PostID
   , Posts.TimeStamp as LatestPost
   , Replies.TimeStamp as LatestReply
   , COALESCE(Replies.TimeStamp, Posts.TimeStamp) as LastActivity
FROM
    Posts 
LEFT OUTER JOIN
    Replies
        ON
    Replies.PostID = Posts.PostID
WHERE 
    Posts.TimeStamp = 
        (SELECT MAX(TimeStamp)
         From Posts sub 
         WHERE sub.PostID = Posts.PostID ) 
  AND
    (Replies.TimeStamp is NULL  
     OR Replies.TimeStamp =
        (SELECT MAX(TimeStamp)
         FROM Replies sub
         WHERE sub.PostID = Posts.PostID
        )
    )
ORDER BY 4 DESC