小编Gra*_*lly的帖子

从sql server中的连接中选择除最后X行之外的所有行

我在对数据库进行一些维护时遇到问题.我们有一个表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)

sql-server sql-server-2012

0
推荐指数
1
解决办法
411
查看次数

标签 统计

sql-server ×1

sql-server-2012 ×1