Получить подмножество строк, сгенерированных запросом
Резюме : в этом руководстве вы узнаете, как использовать предложение 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.
