Получить подмножество строк, сгенерированных запросом
Резюме : в этом руководстве вы узнаете, как использовать предложение PostgreSQL LIMIT для получения подмножества строк, сгенерированных запросом.
Введение в PostgreSQL
Предложение LIMIT
PostgreSQL LIMIT
— это необязательное предложение оператора SELECT
, которое ограничивает количество строк, возвращаемых запросом.
Ниже показан синтаксис LIMIT
пункт:
Язык кода: SQL (язык структурированных запросов) (sql)
SELECT select_list ОТ имя_таблицы ORDER BY sort_expression LIMIT row_count
Оператор возвращает row_count
строк, сгенерированных запросом. Если row_count
равно нулю, запрос возвращает пустой набор. В случае, если row_count
равен NULL
, запрос возвращает тот же набор результатов, поскольку он не содержит предложения LIMIT
.
Если вы хотите пропустить несколько строк, прежде чем возвращать строки
, используйте предложение OFFSET
, помещенное после предложения LIMIT
, в виде следующего оператора:
Язык кода: SQL (язык структурированных запросов) (sql)
SELECT select_list ОТ имя_таблицы LIMIT row_count OFFSET row_to_skip;
Оператор сначала пропускает row_to_skip
строк, а затем возвращает row_count
строк, сгенерированных запросом. Если row_to_skip
равно нулю, оператор будет работать так, как будто в нем нет предложения OFFSET
.
Поскольку в таблице строки могут храниться в неопределенном порядке, при использовании предложения LIMIT
всегда следует использовать предложение ORDER BY
для управления порядком строк. Если вы не используете предложение ORDER BY
, вы можете получить результирующий набор с неопределенным порядком строк.
PostgreSQL
LIMIT
примеров Рассмотрим несколько примеров использования PostgreSQL ОГРАНИЧЕНИЕ
пункта. Для демонстрации мы будем использовать таблицу film
в базе данных примера.
1) Использование PostgreSQL LIMIT для ограничения количества возвращаемых строк пример
В этом примере используется предложение LIMIT
для получения первых пяти фильмов, отсортированных по film_id
:
Язык кода: SQL (язык структурированных запросов) (sql)
SELECT фильм_идентификатор, заглавие, выпуск_год ИЗ фильм СОРТИРОВАТЬ ПО film_id ПРЕДЕЛ 5;
2) Пример использования PostgreSQL LIMIT со OFFSET
Чтобы получить 4 фильма, начиная с четвертого, упорядоченного по film_id
, вы используете оба предложения LIMIT
и OFFSET
следующим образом:
3) Использование PostgreSQL LIMIT OFFSSET для получения верхних/нижних N строк
Как правило, вы часто используете предложение LIMIT
для выбора строк с самыми высокими или самыми низкими значениями из таблицы.
Например, чтобы получить 10 самых дорогих фильмов с точки зрения проката, вы сортируете фильмы по ставке проката в порядке убывания и используете пункт LIMIT
, чтобы получить первые 10 фильмов. Следующий запрос иллюстрирует эту идею:
Язык кода: SQL (язык структурированных запросов) (sql)
SELECT фильм_идентификатор, заглавие, арендная плата ИЗ фильм СОРТИРОВАТЬ ПО rent_rate DESC ПРЕДЕЛ 10;
Результат запроса следующий:
В этом руководстве вы узнали, как использовать предложение PostgreSQL LIMIT OFFSET
для получения подмножества строк. возвращается запросом.
Было ли это руководство полезным?
sql — Как ограничить количество строк в PostgreSQL SELECT
спросил
Изменено 1 год, 9несколько месяцев назад
Просмотрено 137 тысяч раз
Что эквивалентно TOP
SQL Server или FETCH FIRST
DB2 или LIMIT
mySQL в PostgreSQL?
- sql
- postgresql
- sql-limit
1
Вы можете использовать LIMIT так же, как в MySQL, например:
SELECT * FROM users LIMIT 5;
1
Вы всегда можете добавить предложение OFFSET
вместе с предложением LIMIT
.
Возможно, вам потребуется выбрать набор записей из определенного смещения. Вот пример, который выбирает 3 записи, начиная с 3-й позиции:
testdb=# SELECT * FROM COMPANY LIMIT 3 OFFSET 2;
Это даст следующий результат:
id | имя | возраст | адрес | зарплата ----+-------+-----+------------+-------- 3 | Тедди | 23 | Норвегия | 20000 4 | Марк | 25 | Рич-Монд | 65000 5 | Дэвид | 27 | Техас | 85000
Полное объяснение и другие примеры смотрите ЗДЕСЬ
1
В PostgreSQL есть два способа достичь этой цели.
SQL Standard
Первый вариант — использовать стандартный способ SQL:2008 для ограничения набора результатов с использованием синтаксиса FETCH FIRST N ROWS ONLY
:
SELECT заглавие ИЗ почта СОРТИРОВАТЬ ПО идентификатор DESC ВЫБЕРИТЕ ТОЛЬКО ПЕРВЫЕ 50 РЯДОВ
Стандартный синтаксис SQL:2008 поддерживается начиная с PostgreSQL 8.