@survivor2005

Как выбрать последние строки из таблицы цен по айди продукта?

Помогите, пожалуйста, с запросом.
Есть таблица цен.
Там 4 поля (id, price, product_id, timestamp)
Смысл таков, что когда цена меняется старые цены должны храниться в таблице для других нужд.
И в итоге на каждый товар имеется несколько строк с ценами привязанные по полю product_id.
А мне надо что бы вывелось у каждого товара только последняя цена по времени добавления.
Базовый запрос такой:
'SELECT product.*, prices.price FROM  product  LEFT JOIN prices 
         ON  prices.product_id = product.id 
         GROUP BY product.id'
  • Вопрос задан
  • 99 просмотров
Решения вопроса 1
rozhnev
@rozhnev Куратор тега SQL
Fullstack programmer, DBA, медленно, дорого
Используем window functions ROW_NUMBER:
SELECT * FROM (
  SELECT 
	  product.*, 
	  prices.price ,
	  ROW_NUMBER() OVER (PARTITION BY product_id ORDER BY timestamp DESC) rn
  FROM  product 
  JOIN prices ON  prices.product_id = product.id 
) prices WHERE rn = 1
;


Mariadb fiddle
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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