我在对数据库进行一些维护时遇到问题.我们有一个表A和一个具有一对多关系的表B. 现在,表B中的每一行都有1到10行,我希望看到除最近的5行之外的每一行.如果A中任何一行的B中有5行或更少的行,我不想看到它,因为我不关心那些数据.
这是我到目前为止的查询:
WITH cte (id, number)
AS
(
SELECT A.id, COUNT(*)
FROM A INNER JOIN B ON A.id=B.a
GROUP BY A.id
)
SELECT A.id, B.id, number
FROM cte c
INNER JOIN B ON B.a=c.id
WHERE number > 5
ORDER BY A.id, B.id DESC;
GO
Run Code Online (Sandbox Code Playgroud)
它会给我A和B中行的ID,而这个数字只是为了帮助我看看发生了什么(如果有10个匹配的行,那么它将是10,如果是9,则为9).
我真的不知道接下来要去哪里.我在A中有一个行列表,在B中有它们的匹配,我想只看到B中每行的最后5行.我的数据可能如下所示:
A | B | number
---------
1 | 7 | 7
1 | 6 | 7
1 | 5 | 7
1 | 4 | 7
1 | 3 | 7
1 | …Run Code Online (Sandbox Code Playgroud)