为了让事情更容易理解,我们举个例子: 我想只显示特定帖子的前5条评论(就像Facebook上的帖子,人们不能评论它们)。如果您采用此查询,我怎么能在SQL中执行此操作
select tblPost.id,tblComment.id from tblComment,tblPost where tblPost.id = tblComment.postid
如果我尝试select top 5 tblComment.id...
,它将只返回5个结果而不是所有帖子,每个帖子最多只有5条评论。
答案 0 :(得分:2)
select
*
FROM
tblPost P
OUTER APPLY
(SELECT TOP 5 * FROM tblComment C
WHERE P.id = C.postid
ORDER BY something) inline
答案 1 :(得分:1)
尝试使用ROW_NUMBER,假设您使用的是支持它的数据库:
SELECT id, postid
FROM tblComment
(
SELECT
id,
postid,
ROW_NUMBER() OVER (PARTITION BY postid ORDER BY id DESC) AS rn
FROM tblComment
) AS T1
WHERE rn <= 5