Sql server 0,lob预读读取0。。当我从master.dbo.spt_值运行select count(*)时,我得到了2346,你得到了什么?如果你有相同的行数,这可能归结为硬件和内存使用。我从来没有见过偏移和获取功能-这是伟大的!注意:需要存在ORDER BY子句

Sql server 0,lob预读读取0。。当我从master.dbo.spt_值运行select count(*)时,我得到了2346,你得到了什么?如果你有相同的行数,这可能归结为硬件和内存使用。我从来没有见过偏移和获取功能-这是伟大的!注意:需要存在ORDER BY子句,sql-server,tsql,Sql Server,Tsql,0,lob预读读取0。。当我从master.dbo.spt_值运行select count(*)时,我得到了2346,你得到了什么?如果你有相同的行数,这可能归结为硬件和内存使用。我从来没有见过偏移和获取功能-这是伟大的!注意:需要存在ORDER BY子句以避免ORDER BY-ORDER BY(选择NULL)row_number来自何处?上面和下面都不是很好的描述,因为顺序取决于投票数。另外,如果你能解释一下你的代码片段和你提到的另一个答案的优点,那就太酷了。这个需求要高得多。我在一个没有ct


0,lob预读读取0。。当我从master.dbo.spt_值运行
select count(*)时,我得到了
2346
,你得到了什么?如果你有相同的行数,这可能归结为硬件和内存使用。我从来没有见过偏移和获取功能-这是伟大的!注意:需要存在ORDER BY子句以避免ORDER BY-ORDER BY(选择NULL)
row_number
来自何处?上面和下面都不是很好的描述,因为顺序取决于投票数。另外,如果你能解释一下你的代码片段和你提到的另一个答案的优点,那就太酷了。这个需求要高得多。我在一个没有cte的子查询中使用了它,效果非常好。
SELECT TOP 2 [Id] FROM table
SELECT TOP 2 [Id] FROM table 
SELECT TOP 2 [ID] FROM table ORDER BY <YourColumn> ASC/DESC
WITH Resulttable AS 
( 
  SELECT TOP 2 
    *, ROW_NUMBER() OVER(ORDER BY YourColumn) AS RowNumber 
  FROM @Table 
)  
SELECT *
FROM Resultstable
WHERE RowNumber = 2
set statistics io on

;with cte as
(
  select *
    , ROW_NUMBER() over (order by number) as rn
  from master.dbo.spt_values
) 
select *
from cte
where rn = 2

/* Just to add in what I was running RE: Comments */
;with cte as
(
  select top 2 *
    , ROW_NUMBER() over (order by number) as rn
  from master.dbo.spt_values
) 
select *
from cte
where rn = 2
-- Get first row, same as TOP 1
SELECT [Id] FROM 
(
    SELECT [Id], ROW_NUMBER() OVER (ORDER BY [Id]) AS Rownumber
    FROM table
) results
WHERE results.Rownumber = 1

-- Get second row only
SELECT [Id] FROM 
(
    SELECT [Id], ROW_NUMBER() OVER (ORDER BY [Id]) AS Rownumber
    FROM table
) results
WHERE results.Rownumber = 2
SELECT TOP 1 COLUMN1, COLUMN2
from (
  SELECT TOP 2 COLUMN1, COLUMN2
  FROM Table
) ORDER BY ROW_NUMBER DESC 
with T1 as
(
  select row_number() over(order by ID) rownum, T2.ID
  from Table2 T2
)
select ID
from T1
where rownum=2
DECLARE @YourTable table (YourColumn int)
INSERT @YourTable VALUES (5)
INSERT @YourTable VALUES (7)
INSERT @YourTable VALUES (9)
INSERT @YourTable VALUES (17)
INSERT @YourTable VALUES (25)

;WITH YourCTE AS
(
  SELECT TOP 2
    *, ROW_NUMBER() OVER(ORDER BY YourColumn) AS RowNumber
  FROM @YourTable
) 
SELECT *
FROM YourCTE
WHERE RowNumber=2
YourColumn  RowNumber
----------- --------------------
7           2

(1 row(s) affected)
SELECT t.*
FROM (
  SELECT e1.*
    , row_number() OVER (ORDER BY e1.Rate DESC) AS _Rank
  FROM
  HumanResources.EmployeePayHistory AS e1
) AS t
WHERE t._Rank = 2
SELECT TOP 1 *
FROM (
  SELECT TOP 2 * 
  FROM yourTable
  ORDER BY ID
) z
ORDER BY ID DESC
SELECT
   <column(s)>
FROM
   <table(s)>
ORDER BY
   <sort column(s)>
OFFSET 1 ROWS   -- Skip this number of rows
FETCH NEXT 1 ROWS ONLY;  -- Return this number of rows
SELECT *
FROM (
  SELECT top 3 *
    , ROW_NUMBER() OVER (ORDER BY [newsid] desc) AS Rownumber
  FROM news
  where (news_type in(2,12))
) results
WHERE results.Rownumber = 1
select *
from (
  select ROW_NUMBER() OVER (ORDER BY Column_Name) as ROWNO, *
  from Table_Name
) Table_Name
where ROWNO = 2
SELECT id
FROM tablename
ORDER BY column
OFFSET 1 ROWS
FETCH NEXT 1 ROWS ONLY;
DECLARE @FirstId int, @SecondId int

    SELECT TOP 1 @FirstId = TableId from MyDataTable ORDER BY TableId 
    SELECT TOP 1 @SecondId = TableId from MyDataTable WHERE TableId <> @FirstId  ORDER BY TableId 

SELECT @SecondId 
DECLARE @Login NVARCHAR(100)
SELECT @Login = 'domain\username'
-- SELECT @Login = ORIGINAL_LOGIN()

SELECT
    VALUE
FROM
    STRING_SPLIT(@Login, '\')
DECLARE @Login NVARCHAR(100)
SELECT @Login = 'domain\username'
-- SELECT @Login = ORIGINAL_LOGIN()

SELECT
    VALUE
FROM
    STRING_SPLIT(@Login, '\')
ORDER BY
    (SELECT NULL)
OFFSET 1 ROWS
FETCH NEXT 1 ROWS ONLY;