Выборка первых 10 строк SQL: присоединение, сортировка, фильтр

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Чтобы вывести первые 10 строк из результата запроса, можно в MySQL, PostgreSQL и SQLite использовать оператор LIMIT 10. В SQL Server к запросу добавляется TOP 10 в начале выражения. Для получения упорядоченных результатов рекомендуется использовать сортировку с помощью ORDER BY.

Примеры для различных СУБД:

SQL
Скопировать код
-- MySQL, PostgreSQL, SQLite
SELECT * FROM your_table ORDER BY column_name LIMIT 10;  // Возврат первой десятки строк!

-- SQL Server
SELECT TOP 10 * FROM your_table ORDER BY column_name;  // Только первые 10 строк!
Кинга Идем в IT: пошаговый план для смены профессии

Упорядочивание строк

Порядок строк становится критически важным, когда требуется последовательность данных. Важно при работе со временно-зависимыми данными, или при выборке максимальных или минимальных значений.

SQL
Скопировать код
-- SQL Server
SELECT TOP 10 * FROM sales_data ORDER BY transaction_date DESC;  // 10 последних записей о продажах!

-- MySQL
SELECT * FROM sales_data ORDER BY transaction_date DESC LIMIT 10;  // 10 самых свежих записей!

Таким образом, мы получаем 10 самых последних продаж.

Пагинация, обработка повторяющихся значений и другие советы

Пагинацию и обработку связанных значений можно реализовать с помощью OFFSET и FETCH FIRST.

SQL
Скопировать код
-- SQL Server с использованием "OFFSET" и "FETCH NEXT"
SELECT * FROM products ORDER BY price OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY;  // Запрос на третью страницу результата!

-- MySQL
SELECT * FROM products ORDER BY price LIMIT 20, 10;  // Следующие 10 строк начиная со второй десятки!

При выборке связанных значений с одинаковыми показателями можно использовать такие запросы:

SQL
Скопировать код
-- SQL Server для обработки равнозначных результатов
SELECT * FROM employees ORDER BY salary FETCH FIRST 10 ROWS WITH TIES;  // Отбор сотрудников с одинаковой зарплатой!

Порядок выполнения: сначала фильтруем, потом считаем

При подсчете повторяющихся значений или объединении таблиц соблюдайте порядок действий: фильтрация (WHERE)сортировка (ORDER BY)подсчет/ объединение → и по итогам этих действий выполните ограничение строк (LIMIT/ TOP).

SQL
Скопировать код
-- MySQL для подсчета частоты использования тегов
SELECT tag, COUNT(*) as frequency
FROM posts_tags
GROUP BY tag
ORDER BY frequency DESC
LIMIT 10;  // Топ-10 использованных тегов!

При объединении таблиц следите за корректностью условия соединения, чтобы не получить путаницы:

SQL
Скопировать код
-- SQL Server: корректное объединение таблиц
SELECT TOP 10 p.name, o.quantity
FROM products p
JOIN orders o ON p.product_id = o.product_id
ORDER BY o.quantity DESC;  // 10 самых продаваемых продуктов!

Нейтральные к платформам методы

FETCH FIRST — это современный стандарт SQL, поддерживаемый множеством СУБД, включая DB2, PostgreSQL и Oracle. Учитывайте особенности синтаксиса каждой СУБД. Например, в Oracle версии 12.1 и выше пишут так:

SQL
Скопировать код
SELECT * FROM products ORDER BY price
FETCH FIRST 10 ROWS ONLY;  // Выводится только первые 10 строк!

В Sybase ASE ограничение строк выглядит так:

SQL
Скопировать код
SET ROWCOUNT 10
SELECT * FROM products ORDER BY price
SET ROWCOUNT 0  // После выполнения запроса обязательно снимаем ограничение!

Визуализация

Допустим, у нас есть 10 билетов для первых 10 фанатов на концерт, в очереди: 👩‍🎤🧔👨‍🎤👩‍🦰👨‍🦱👩👱‍♂️🧓👴🧑‍🦲👩‍🦳🧒👦 ... Используя нашу схему с SQL, мы придаём:

SQL
Скопировать код
SELECT * FROM crowd LIMIT 10;  // Первые 10 получают билеты!

Теперь наши VIP-зрители: 👩‍🎤🧔👨‍🎤👩‍🦰👨‍🦱👩👱‍♂️🧓👴🧑‍🦲. Остальные ожидают своей очереди: 👩🏽‍🦳🧒👦 ...

Помещайте WHERE перед LIMIT

Применяйте WHERE до LIMIT, чтобы уменьшить объем данных, подлежащих обработке, и улучшить эффективность запроса. Это особенно важно при работе с большим объёмом данных. Выводите только наиболее релевантные строки!

SQL
Скопировать код
-- Эффективное использование WHERE и LIMIT в MySQL
SELECT * FROM transactions
WHERE transaction_date > CURRENT_DATE – INTERVAL 1 DAY
ORDER BY amount DESC 
LIMIT 10;  // Только последние транзакции!

Полезные материалы

  1. Использование LIMIT и OFFSET — Документация PostgreSQL — PostgreSQL подробно объясняет применение LIMIT и OFFSET.
  2. ROWNUM против FETCH FIRST ROWS — Oracle Ask TOM — Oracle детально описывает разницу между ROWNUM и FETCH.
  3. Примеры использования SQL TOP, LIMIT и ROWNUM — w3schools.com — W3schools показывает, как использовать TOP, LIMIT и ROWNUM в различных версиях SQL.
  4. Использование пункта ORDER BY (Transact-SQL) — SQL Server | Microsoft Learn — Microsoft рассказывает о применении ORDER BY вместе с OFFSET и FETCH.
  5. Язык запросов SQLite: пункт LIMIT — Документация SQLite — SQLite предлагает информацию о синтаксисе операторов LIMIT и OFFSET.