gpt4 book ai didi

sql - TSQL 左连接且仅右起最后一行

转载 作者:行者123 更新时间:2023-12-01 19:16:19 25 4
gpt4 key购买 nike

我正在编写 sql 查询来获取帖子以及该帖子的最后一条评论(如果存在)。但我找不到一种方法来限制左连接中右列仅包含 1 行。

这是此查询的示例。

SELECT post.id, post.title,comment.id,comment.message
from post
left outer join comment
on post.id=comment.post_id

如果帖子有 3 条评论,我会得到 3 行的帖子,但我只想要 1 行最后一条评论(按日期排序)。

有人可以帮我解决这个问题吗?

最佳答案

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

对于帖子数量少但评论较多的情况,前者效率更高;后者对于许多评论较少的帖子更为有效。

关于sql - TSQL 左连接且仅右起最后一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2281551/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com