Есть ли способ показать только первые N строк вывода из запроса SQL? Бонусные точки, если запрос перестает работать после вывода строк N.
Мне больше всего интересно найти что-то, что работает в Oracle.
Есть ли способ показать только первые N строк вывода из запроса SQL? Бонусные точки, если запрос перестает работать после вывода строк N.
Мне больше всего интересно найти что-то, что работает в Oracle.
Было бы полезно указать, какую базу данных вы хотите настроить. Различные базы данных имеют различный синтаксис и методы для достижения этого:
Например, в Oracle вы можете это сделать, поставив условие на RowNum (select ... from ... where ... rownum < 11 → приведет к выводу первых 10 записей)
В MySQL вы можете использовать вы можете использовать предложение limit.
  Microsoft SQL Server = >  SELECT TOP 10 column FROM table
  PostgreSQL и MySQL = >  SELECT column FROM table LIMIT 10
  Oracle = >  select * from (SELECT column FROM table ) WHERE ROWNUM <= 10 (благодаря стили)
  Sybase = >  SET rowcount 10 SELECT column FROM table
  Firebird = >  SELECT FIRST 10 column FROM table
ПРИМЕЧАНИЕ. Современные инструменты ORM, такие как Hibernate, предоставляют API уровня высокого уровня (Query, Restriction, Condition), которые абстрагируют логику верхних n строк на основе выбранного вами диалекта.
Для Oracle предлагаемое и принятое решение неверно. Попробуйте использовать предложение порядка, и результаты будут непредсказуемыми. SQL должен быть вложен, чтобы выполнить это в Oracle.
select name, price
  from (
    select name, price, row_number() over (order by price) r
      from items
  )
where r between 1 and 5; 
Приведенный выше пример был заимствован из http://www.adp-gmbh.ch/ora/sql/examples/first_rows.html, который хорошо обсуждает эту тему.
Я знаю это с MySQL, но я не знаю, является ли он стандартным SQL: завершите запрос "с ограничением X", X = n. линий, которые вы хотите получить.
Пример:
 SELECT NAME FROM EMPLOYEES ORDER BY SALARY DESC LIMIT 10;
Для Oracle вы можете попробовать это
select /*+ FIRST_ROWS(10) */ * from table;