ANSI SQL версия SELECT TOP 1

существует ли ANSI SQL-совместимая версия SQL SERVER SELECT TOP n?

1 ответов


ANSI / ISO SQL:2003 введен оконные функции:

SELECT * FROM (
  SELECT
    ROW_NUMBER() OVER (ORDER BY age ASC) AS rownum,
    person_id,
    person_name,
    age
  FROM person
) AS foo
WHERE rownum <= 3

Microsoft SQL Server поддерживает этот синтаксис с SQL Server 2005. http://msdn.microsoft.com/en-us/library/ms189798 (v=sql.90).aspx

ANSI / ISO SQL: 2008 ввел более простой синтаксис для FETCH FIRST, который может быть более похож на Microsoft / Sybase TOP синтаксис:

SELECT person_id, person_name, age FROM person
FETCH FIRST 3 ROWS ONLY

Microsoft пока не поддерживает этот синтаксис. Смотреть также http://en.wikipedia.org/wiki/Select_ (SQL)#Limiting_result_rows

если вы все еще используете Microsoft SQL Server 2000, Вы должны прочитать вопрос, который я опубликовал некоторое время назад о выполнении запросов стиля " подкачки: эмулировать предложение MySQL LIMIT в Microsoft SQL Server 2000