Как выбрать 10 строк в SQL: TOP, LIMIT и FETCH

Выбрать 10 строк в SQL можно через ограничение результата. В SQL Server используют TOP 10, в MySQL, PostgreSQL и SQLite — LIMIT 10, а в некоторых базах встречается вариант FETCH FIRST 10 ROWS ONLY

Главное правило: если важен порядок, добавляйте ORDER BY. Без сортировки база может вернуть любые 10 строк, и при следующем запуске порядок не обязан быть таким же

SQL Server: TOP 10

SELECT TOP 10
    id,
    name,
    price
FROM products
ORDER BY id;

Этот запрос вернет первые 10 товаров по возрастанию id

Если нужны 10 самых дорогих товаров:

SELECT TOP 10
    id,
    name,
    price
FROM products
ORDER BY price DESC;

TOP пишется после SELECT, а не в конце запроса. Это частая ошибка у тех, кто переходит с MySQL или PostgreSQL

MySQL, PostgreSQL и SQLite: LIMIT 10

SELECT
    id,
    name,
    price
FROM products
ORDER BY id
LIMIT 10;

В этих базах LIMIT пишется в конце запроса после сортировки

Для 10 самых дорогих товаров:

SELECT
    id,
    name,
    price
FROM products
ORDER BY price DESC
LIMIT 10;

FETCH FIRST

В некоторых базах работает синтаксис:

SELECT
    id,
    name,
    price
FROM products
ORDER BY id
FETCH FIRST 10 ROWS ONLY;

Он выглядит ближе к стандартному SQL, но в учебных материалах чаще встречаются TOP и LIMIT, потому что они привычнее для SQL Server, PostgreSQL и MySQL

Выбрать 10 строк со смещением

Иногда нужно не первые 10 строк, а следующую страницу. В SQL Server можно использовать OFFSET и FETCH:

SELECT
    id,
    name,
    price
FROM products
ORDER BY id
OFFSET 10 ROWS FETCH NEXT 10 ROWS ONLY;
SELECT
    id,
    name,
    price
FROM products
ORDER BY id
LIMIT 10 OFFSET 10;

Такой запрос вернет вторую страницу по 10 строк, если считать первую страницу строками с 1 по 10

Мини-практика

Создайте таблицу и выберите 10 строк:

CREATE TABLE numbers_demo (
    id int NOT NULL PRIMARY KEY,
    title nvarchar(50) NOT NULL
);

INSERT INTO numbers_demo (id, title)
VALUES
    (1, N'Строка 1'),
    (2, N'Строка 2'),
    (3, N'Строка 3'),
    (4, N'Строка 4'),
    (5, N'Строка 5'),
    (6, N'Строка 6'),
    (7, N'Строка 7'),
    (8, N'Строка 8'),
    (9, N'Строка 9'),
    (10, N'Строка 10'),
    (11, N'Строка 11');

SELECT TOP 10 *
FROM numbers_demo
ORDER BY id;

Проверьте, что строка с id = 11 не попала в результат

Частые ошибки

  • Пишут LIMIT в SQL Server
  • Пишут TOP в PostgreSQL или MySQL
  • Не добавляют ORDER BY и получают нестабильный результат
  • Думают, что первые 10 строк всегда означают первые по id
  • Путают OFFSET и номер страницы
  • Используют SELECT *, хотя в отчете нужны только конкретные столбцы

Что почитать дальше по SQL

Если нужен общий маршрут по теме, откройте рубрику SQL. Для соседних задач пригодятся эти разборы:

Оцените статью
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x