SELECT ... OFFSET ... FETCH
SELECT ... OFFSET ... FETCH было введено в MariaDB 10.6.
Синтаксис
OFFSET start { ROW | ROWS }
FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } { ONLY | WITH TIES }
Описание
Оператор OFFSET позволяет вернуть только те элементы набора результатов, которые следуют после указанного смещения. Оператор FETCH указывает количество строк для возврата, а ONLY или WITH TIES определяет, будут ли также возвращены любые дополнительные результаты, которые находятся на последнем месте в отсортированном наборе результатов.
После операторов OFFSET и FETCH можно использовать как единственное ROW, так и множественное ROWS; выбор не влияет на результаты.
В случае WITH TIES, требуется оператор ORDER BY, в противном случае будет возвращено сообщение об ошибке.
SELECT i FROM t1 FETCH FIRST 2 ROWS WITH TIES; ERROR 4180 (HY000): FETCH ... WITH TIES requires ORDER BY clause to be present
Примеры
Предположим, таблица содержит 6 строк:
CREATE OR REPLACE TABLE t1 (i INT); INSERT INTO t1 VALUES (1),(2),(3),(4), (4), (5); SELECT i FROM t1 ORDER BY i ASC; +------+ | i | +------+ | 1 | | 2 | | 3 | | 4 | | 4 | | 5 | +------+
OFFSET 2 позволяет пропустить первые две строки.
SELECT i FROM t1 ORDER BY i ASC OFFSET 2 ROWS; +------+ | i | +------+ | 3 | | 4 | | 4 | | 5 | +------+
FETCH FIRST 3 ROWS ONLY ограничивает результаты тремя строками.
SELECT i FROM t1 ORDER BY i ASC OFFSET 1 ROWS FETCH FIRST 3 ROWS ONLY; +------+ | i | +------+ | 2 | | 3 | | 4 | +------+
Тот же результат может быть достигнут с помощью оператора LIMIT:
SELECT i FROM t1 ORDER BY i ASC LIMIT 3 OFFSET 1; +------+ | i | +------+ | 2 | | 3 | | 4 | +------+
WITH TIES гарантирует, что привязанный результат 4 также будет возвращен.
SELECT i FROM t1 ORDER BY i ASC OFFSET 1 ROWS FETCH FIRST 3 ROWS WITH TIES; +------+ | i | +------+ | 2 | | 3 | | 4 | | 4 | +------+
См. также
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/select-offset-fetch/