返回 rownumber() 作为查询的一部分

本文关键字:查询 一部分 rownumber 返回 | 更新日期: 2023-09-27 18:32:11

我有一个SQL查询,它返回到数据表dtStories(c#)。

with records as (select row_number() over (order by pages.createdate desc)as 'row', 
field1, field2...etc. from records where row between 1 and 7

(在其他情况下,我需要"n"行或x和y行之间,因此我没有使用简单的选择前7个查询。

我试图根据它所在的行做稍微不同的事情,所以我正在查询 row[0],认为这会包含行号。但是,在我的 SQL Server 中检查返回,它实际上只返回字段 1、字段 2...等等,这显然是为什么我的

foreach (Datarow row in dtStories)
{
  if (row[0].ToString() == "1")
  {
     ...
  }
}

不行。

有没有办法确保行作为SQLQuery的一部分返回到数据表中,或者使用c#只访问表的row1,row2等?

返回 rownumber() 作为查询的一部分

您不显示整个选择语句,因此不可能知道您实际在做什么。 我们可以说这是因为()不匹配。

我希望您的代码(缩进以明确)如下所示:

with records as 
(
   select row_number() over (order by pages.createdate desc)as 'row', 
          field1, field2 -- ...
   from original_table
)
select  
    field1, field2 -- ...
from records
where row between 1 and 7

现在应该清楚了...要将行列包含在第二个选择列表中(在 CTE 外部)

with records as 
(
   select row_number() over (order by pages.createdate desc)as 'row', 
          field1, field2 -- ...
   from original_table
)
select  row, -- here!
    field1, field2 -- ...
from records
where row between 1 and 7

明白你的with records ..是SQL Server还是C#代码。看起来不是sql,因为没有右括号,也没有选择。

WITH称为 CTE,CTE 是在内存中临时创建的。

你想要类似的东西

 with records as 
    (
      select row_number() over ....
    )
 SELECT *
 FROM records