在 SQL Server 中,如何选择前 4 行?

Posted

技术标签:

【中文标题】在 SQL Server 中,如何选择前 4 行?【英文标题】:In SQL Server, how to pick top 4th row? 【发布时间】:2016-12-05 11:19:23 【问题描述】:

为每个 Id# 选择前 4 行的 SQL 查询是什么?

它不是前 4 行记录。我试图为每个 id 只选择第 4 行记录/列。

【问题讨论】:

行是升序还是降序?你能举个例子说明输出应该是怎样的吗? 每个 Bill Id 都有几行 Transactions。我只需要从顶部选择第 4 行。 如果您使用的是 mysql,那么有限制子句来设置偏移 n 检索的行数 我正在尝试获取 SQL 2008 上的查询 【参考方案1】:

使用row_number函数:

With cte as
(
    select 
        *,
        row_number() over (partition by id order by id) as rownum
    from 
        table 
)
select * 
from cte 
where rownum = 4

根据你对top的定义在分区中更改顺序

【讨论】:

【参考方案2】:

您可以使用以下查询并传递所需的表 ID 以获取特定的第 4 行:

SELECT * 
FROM 
    (SELECT 
         m.CityId, m.Country, m.Location, m.NoofDweller, 
         ROW_NUMBER() OVER (ORDER BY Country ASC) AS RowNumber 
     FROM 
         Cities m 
     WHERE 
         m.Country = 3 -- Just pass the required ID of the table 
    ) AS Details
WHERE 
    RowNumber = 4 -- Gets details of the 4th row of the given ID 

【讨论】:

以上是关于在 SQL Server 中,如何选择前 4 行?的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server如何编辑超过前200行的数据

SQL server 数据库 如何把一张表复制到另一个数据库表中

如何在 SQL Server 中更新具有数百万行的大表?

Jooq 与 SQL Server 如何选择前 N 个结果

如何从 T-SQL 中的表中选择前 N 行?

选择 SQL Server CE 中的前两个字符