/
Вопросы и ответы
/
SQL
/

Как вывести последние записи sql

Как вывести последние записи sql

5 лет назад

Человек-Молекула

Ответы

0

Последние записи в таблице можно вывести следующим образом при наличии первичного ключа:

1
SELECT * FROM table_name ORDER BY id DESC LIMIT 0,100;

C помощью LIMIT указываем необходимое нам количество последних записей (в примере выше - 100).

4 года назад

Марфа Никитина

0

У таблицы в SQL нет «последней» строки, пока вы не зададите порядок. Последние записи — это первые строки при обратной сортировке по дате или id:

1
2
3
4
SELECT *
FROM orders
ORDER BY created_at DESC
LIMIT 10;

DESC сортирует от новых к старым, LIMIT 10 оставляет десять строк. Без ORDER BY база вернёт строки в произвольном порядке, и «последние» каждый раз могут быть разными.

Сортировка по id

Если id автоинкрементный, новые строки получают больший номер:

1
SELECT * FROM orders ORDER BY id DESC LIMIT 10;

Дата создания надёжнее: id не всегда идут по порядку вставки — например, при импорте данных.

Синтаксис в разных СУБД

СУБДЗапрос
PostgreSQL, MySQL, SQLiteORDER BY id DESC LIMIT 10
SQL ServerSELECT TOP 10 * FROM orders ORDER BY id DESC
Oracle 12c+, PostgreSQLORDER BY id DESC FETCH FIRST 10 ROWS ONLY

Последние записи в прямом порядке

Взять 10 последних и показать от старых к новым:

1
2
3
4
5
SELECT *
FROM (
  SELECT * FROM orders ORDER BY id DESC LIMIT 10
) t
ORDER BY id;

Последняя запись для каждого клиента

1
2
3
SELECT DISTINCT ON (customer_id) *
FROM orders
ORDER BY customer_id, created_at DESC;

DISTINCT ON есть только в PostgreSQL. В других СУБД используют оконную функцию:

1
2
3
4
5
6
SELECT *
FROM (
  SELECT o.*, ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY created_at DESC) AS rn
  FROM orders o
) t
WHERE rn = 1;

На больших таблицах ускорит запрос индекс по столбцу сортировки: CREATE INDEX ON orders (created_at);.

Сортировку и LIMIT разбирают в бесплатном курсе «Основы SQL».

7 дней назад

Никита Вихров

+7 800 100 22 47

бесплатно по РФ

+7 495 085 21 62

бесплатно по Москве

108813 г. Москва, вн.тер.г. поселение Московский,
г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3
ОГРН 1217300010476
ИНН 7325174845