SQL Server 2000: получение первых N строк - PullRequest
0 голосов
/ 04 июля 2011

Я выполняю простой запрос, который получает первые 5000 строк какой-либо таблицы:

  SELECT TOP 5000 
         accountid, account, accountmanagerid, mainphone, alternatephone, fax, email, webaddress, createuser, modifyuser, createdate, modifydate, addressid, shippingid 
    FROM sysdba.account 
   WHERE 1 = 1 
     AND 1 = 1 
ORDER BY accountid asc

Это отлично работает на SQL Server 2008, но, к сожалению, сейчас я пытаюсь запустить этот ранее работающий скриптпротив SQL Server 2000. Кажется, он отклоняет команду top.

Что мне нужно сделать, чтобы вернуть мои 5000 строк в этой версии сервера sql?

Ответы [ 2 ]

3 голосов
/ 04 июля 2011

Ключевое слово TOP недоступно в SQL Server 2000. Однако вы можете использовать rowcount для фильтрации верхних записей. Вы можете изменить вышеуказанный запрос, как показано ниже:


-- 1=1 is NOT needed unless you are appending this string as dynamic SQL

SET ROWCOUNT 50
SELECT 
         accountid, account, accountmanagerid, mainphone, alternatephone, fax, email, webaddress, createuser, modifyuser, createdate, modifydate, addressid, shippingid 
    FROM sysdba.account 
ORDER BY accountid asc

2 голосов
/ 04 июля 2011

без ключевых слов ТОП и вы можете получить решение этого вопроса следующим образом:

select * from 
(
  select t_1.*,rownum c_1 from 
  (
  select accountid,account,accountmanagerid,mainphone,alternatephone,
       fax,email,webaddress,createuser, modifyuser,createdate,modifydate,addressid,hippingid
  FROM sysdba.account     
  WHERE 1 = 1-- whatever condition
    AND 1 = 1 -- condition 2 
  ORDER BY accountid asc 
  )t_1
)
where c_1 <5000
order by c_1
...