您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

TSQL左连接,右上仅最后一行

TSQL左连接,右上仅最后一行

SELECT  post.id, post.title, comment.id, comment.message
FROM    post
OUTER APPLY
        (
        SELECT  TOP 1 *
        FROM    comment 褋
        WHERE   c.post_id = post.id
        ORDER BY
                date DESC
        ) comment

或者

SELECT  *
FROM    (
        SELECT  post.id, post.title, comment.id, comment.message,
                ROW_NUMBER() OVER (PARTITION BY post.id ORDER BY comment.date DESC) AS rn
        FROM    post
        LEFT JOIN
                comment
        ON      comment.post_id = post.id
        ) q
WHERE   rn = 1

前者对于很少的帖子,每个帖子中都有很多评论,效率更高;对于许多帖子,每个帖子中都很少有评论,后者的效率更高。

SQLServer 2022/1/1 18:45:46 有291人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶