Подтвердить что ты не робот

Показать только первые N строк вывода SQL-запроса

Есть ли способ показать только первые N строк вывода из запроса SQL? Бонусные точки, если запрос перестает работать после вывода строк N.

Мне больше всего интересно найти что-то, что работает в Oracle.

4b9b3361

Ответ 1

Было бы полезно указать, какую базу данных вы хотите настроить. Различные базы данных имеют различный синтаксис и методы для достижения этого:

Например, в 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 строк на основе выбранного вами диалекта.

Ответ 2

Для 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, который хорошо обсуждает эту тему.

Ответ 3

Я знаю это с MySQL, но я не знаю, является ли он стандартным SQL: завершите запрос "с ограничением X", X = n. линий, которые вы хотите получить.

Пример:

SELECT NAME FROM EMPLOYEES ORDER BY SALARY DESC LIMIT 10;

Ответ 4

Для Oracle вы можете попробовать это

select /*+ FIRST_ROWS(10) */ * from table;