Как взять последнюю запись из таблицы sql
Перейти к содержимому

Как взять последнюю запись из таблицы sql

  • автор:

Как получить последнюю по дате запись (SQLite)?

У меня есть таблица price (id, link, name, cost, date) . В столбце name содержатся имена товаров, в столбце cost — цена на соответствующий товар. Эти цены с некоторой периодичностью добавляются в таблицу. Мне необходимо вытащить из таблицы последнюю запись конкретного товара по дате. Как я это могу сделать?

Отслеживать
задан 26 янв в 0:13
55 4 4 бронзовых знака
order by date limit 1
26 янв в 1:49

Последняя по дате = первая по убыванию дат. Первая = limit 1 | first 1 | top 1, в зависимости от диалекта sql. По убыванию дат = order by date desc.

26 янв в 3:42

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

SELECT * FROM price WHERE name = 'product_name' ORDER BY date DESC LIMIT 1; 

запрос сначала выбирает все записи с именем товара product_name , затем сортирует их по дате в порядке убывания и возвращ. только одну посл. запись с помощью оператора LIMIT 1 .

SELECT * FROM price p1 WHERE date = (SELECT MAX(date) FROM price p2 WHERE p1.name=p2.name AND p1.name='product_name') 
SELECT * FROM (SELECT * FROM price WHERE name = 'product_name' ORDER BY date DESC) as temp_table GROUP BY name 

Еще одно решение может быть функции для вашей СУБД, например ROW_NUMBER() в SQL, DENSE_RANK() в Oracle или RANK() в MySQL.

WITH temp_table AS ( SELECT id, link, name, cost, date, ROW_NUMBER() OVER (PARTITION BY name ORDER BY date DESC) as rn FROM price ) SELECT * FROM temp_table WHERE name = 'product_name' and rn = 1; 

Предложенный мной ранее запрос с использованием оператора GROUP BY может возвращать неожиданный результат, если таблица price содержит несколько записей с одинаковым именем товара и датой, так как в этом случае неопределенно, какую из этих записей вернет запрос. Есть несколько других способов решить эту задачу. Один из них — это использование сортировки и оператора LIMIT 1 в запросе. Например:

SELECT id, link, name, cost, date FROM price WHERE name = 'product_name' ORDER BY date DESC LIMIT 1; 

Этот запрос выбирает все записи с именем товара ‘product_name’, сортирует их по дате в порядке убывания и возвращает только одну последнюю запись с помощью оператора LIMIT 1.

Другой способ — подзапрос с макс. датой:

SELECT id, link, name, cost, date 

Как взять последнюю запись из таблицы sql

Рассмотрим несколько примеров, как получить id последней записи в таблицах mysql.

Существует несколько способов получения последней добавленной записи.

Получение последнего добавленного id в таблице mysql — способ 1.

Делаем полную выборку из таблицы your_table с помощью оператора SELECT, используем сортирову в обратном порядке по столбцу id (ORDER BY id DESC) и оставляем одну запись (LIMIT 1), понятно что она и будет последней добавленной записью.

SELECT * FROM your_table ORDER BY id DESC LIMIT 1;

Получение последнего добавленного id в таблице mysql — способ 2.

Используем для получения последнего id вставленной строки, функцию LAST_INSERT_ID().

SELECT * FROM your_table WHERE >Это все, если кто знает еще какие-нибудь способы то пишите. Всем пока.

Как получить последнюю строку sql

Чтобы получить последнюю строку в таблице, можно воспользоваться следующей командой:

Есть что добавить? Зарегистрируетесь

Курсы по программированию на Хекслете

Backend-разработка

Разработка серверной части сайтов и веб-приложений

Frontend-разработка

Разработка внешнего интерфейса сайтов и веб-приложений и верстка

Создание сайтов

Разработка сайтов и веб-приложений на JS, Python, Java, PHP и Ruby on Rails

Тестирование

Ручное тестирование и автоматизированное тестирование на JS, Python, Java и PHP

Аналитика данных

Сбор, анализ и интерпретация данных на Python

Интенсивные курсы

Интенсивное обучение для продолжающих

DevOps

Автоматизация настройки локального окружения и серверов, развертывания и деплоя

Веб-разработка

Разработка, верстка и деплой сайтов и веб-приложений, трудоустройство для разработчиков

Математика для программистов

Обучение разделам математики, которые будут полезны при изучении программирования

JavaScript

Разработка сайтов и веб-приложений и автоматизированное тестирование на JS

Python

Веб-разработка, автоматическое тестирование и аналитика данных на Python

Java

Веб-разработка и автоматическое тестирование на Java

PHP

Веб-разработка и автоматическое тестирование на PHP

Ruby

Разработка сайтов и веб-приложений на Ruby on Rails

Go

Курсы по веб-разработке на языке Go

HTML

Современная верстка с помощью HTML и CSS

SQL

Проектирование базы данных, выполнение SQL-запросов и изучение реляционных СУБД

Git

Система управления версиями Git, регулярные выражения и основы командой строки

Похожие вопросы

26 октября 2021

26 октября 2021

26 октября 2021

26 октября 2021

  • 8 800 100 22 47 бесплатно по РФ
  • +7 495 085 28 38 бесплатно по Москве

Направления

  • Курсы «Backend-разработка»
  • Курсы «Frontend-разработка»
  • Курсы «Создание сайтов»
  • Курсы «Тестирование»
  • Курсы «Аналитика данных»
  • Интенсивные курсы
  • Курсы DevOps
  • Курсы «Веб-разработка»
  • Курсы «Математика для программистов»
  • Все курсы

О Хекслете

  • О нас
  • Карьера в Хекслете
  • Хекслет Колледж
  • Сведения об образовательной организации
  • Лицензия № Л035-01216-73/00668844

ООО «Хекслет Рус» 432071, г. Ульяновск, пр-т Нариманова, дом 1Г, оф. 23 ОГРН 1217300010476

  • Справка
  • Вопросы и ответы
  • Сообщество
  • Дополнительно
  • Условия использования
  • Соглашение об обработке ПД
  • Оферта
  • Акции

postgresql: взять последнюю запись

id | index | desc
________________________
1 | 5 | first for 5
________________________
2 | 4 | fisrt for 4
________________________
3 | 4 | second for 4
________________________
4 | 5 | second for 5
________________________
5 | 1 | fisrt for 1
________________________
6 | 3 | fisrt for 3
________________________
7 | 3 | second for 3

Подскажите пожалуйста, как выбрать строку для последней записи для index
т.е. например, чтобы получить
________________________
4 | 5 | second for 5
________________________

pulya
19.03.17 20:47:40 MSK

SELECT * FROM mytable ORDER BY index DESC, id DESC LIMIT 1;

theNamelessOne ★★★★★
( 19.03.17 21:02:14 MSK )
Ответ на: комментарий от theNamelessOne 19.03.17 21:02:14 MSK

А Postgres это оптимизирует до O(n) или будет сортировать за O(n log n)?

anonymous
( 19.03.17 21:41:20 MSK )
Ответ на: комментарий от theNamelessOne 19.03.17 21:02:14 MSK

Спасибо!
А как сделать, чтобы указать по какому номеру в колонке index?

pulya
( 19.03.17 21:51:38 MSK ) автор топика
Ответ на: комментарий от anonymous 19.03.17 21:41:20 MSK

А Postgres это оптимизирует до O(n) или будет сортировать за O(n log n)?

Оптимизирует. А если индекс отстроить то будет O(1).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *