3

limit x,y私は使用する代わりにsqlserverにないことを知っています:

 select  ROW_NUMBER(),name OVER (ORDER BY name) AS
 myrow from pack  where myrow > 5 and myrow < 10

しかし、次のエラーがあります:

Msg 207, Level 16, State 1, Line 1
Invalid column name 'myrow'.
Msg 207, Level 16, State 1, Line 1
Invalid column name 'myrow'.

何か案が?

Edit

SQL Server の mysql " LIMIT " 句の同等の構文とは何かを見ましたが、問題は解決しませんでした。

4

2 に答える 2

1

これを試してください(2005年以降)-

SELECT p.name
FROM ( 
    SELECT  
          name
        , myrow = ROW_NUMBER() OVER (ORDER BY name)  
    FROM dbo.pack
) p
WHERE myrow BETWEEN 5 AND 9

またはこれを試してください(2012年用)-

SELECT name
FROM dbo.pack
ORDER BY name 
OFFSET 5 ROWS FETCH NEXT 5 ROWS ONLY
于 2013-05-27T13:51:33.517 に答える
1

SQL Server 2012 には、OFFSET FETCH構文があります。

ただし、古いバージョンでは ROW_NUMBER を使用する必要がありますが、派生テーブルでは

select
    name
from
    (
    select
       name,
       ROW_NUMBER() OVER (ORDER BY name) AS myrow
    from
       pack
    ) X
where
   myrow > 5 and myrow <= 10

提案された複製で提案された回答に従って、3 つのネストされた TOP を使用しないでください。

于 2013-05-27T13:51:35.620 に答える