如何选择 SQL Query 的第二行或第三行

Posted

技术标签:

【中文标题】如何选择 SQL Query 的第二行或第三行【英文标题】:How to select the second or third row of SQL Query 【发布时间】:2019-07-11 16:07:21 【问题描述】:

我有这个问题:

SELECT TOP 6 
    NoMachine, COUNT(NoMachine) AS Calls 
FROM 
    DT 
GROUP BY 
    NoMachine 
ORDER BY 
    Calls DESC;

在这6条记录中,我想选择每一条,第一条,第二条,第三条,等等。

最简单的方法是什么?我正在使用 SQL Server 2008 R2。

【问题讨论】:

如果你只想要TOP 6的第一个3,为什么不直接使用TOP 3呢?另外,如果没有人 提醒您,SQL Server 2008(R2) 现已停止支持;所以你真的很想看看升级路径。 我需要最常用机器的信息,前 6 台。一个接一个。而且我无法升级我工作服务器上的 SQL Server。 【参考方案1】:

使用row_number()

select * from 
(SELECT  NoMachine,
 COUNT(*) AS Calls,
 row_number()over(order by  Calls DESC) rn
 FROM DT GROUP BY NoMachine 
) a where rn in (2,3)

【讨论】:

这段代码看不懂,很多语法错误。 @RobertoLopez 一些错字现在更新了答案检查 我编辑了你的代码,现在可以正常工作了,非常感谢! 如果发布的代码确实有效,这将是一个更好的答案。这个概念很好,但发布的代码根本不起作用。只需将第一行更改为“with cte as”即可。

以上是关于如何选择 SQL Query 的第二行或第三行的主要内容,如果未能解决你的问题,请参考以下文章

如何选择具有给定类名的第一个、第二个或第三个元素?

Peewee 如何选择每 n+ 行?

SQL Server 中的选择性更新

如何在mysql中选择前三行

11.3 模拟赛

如何把WinForms中DataGrid的第一列放上复选框,可以多项选择???急!