vanyahuk7
@vanyahuk7
Co-founder beauto.com.ua co-founder limgro.com - W

Как вытащить все уникальные записи из бд?

Есть 2 таблицы : products и product_prices, они связаны по ключу products.id = product_prices.product_id

И запрос:
SELECT DISTINCT ON ( product_prices.product_id) product_id, slug, city_id 
FROM"products"
	LEFT JOIN "product_prices" ON "product_prices"."product_id" = "products"."id" 
ORDER BY city_id asc LIMIT 30


Проблема в том, что нужно сделать order by city_id asc

Вместо отсортированных записей получаю ошибку:
ERROR: SELECT DISTINCT ON expressions must match initial ORDER BY expressions

Когда добавляю в ORDER BY product_id, city_id asc то сортирует по product_id

Как решить такую задачку?
  • Вопрос задан
  • 184 просмотра
Пригласить эксперта
Ответы на вопрос 2
Melkij
@Melkij
PostgreSQL DBA
distinct on требует использовать order by по этим же полям и каким-то ещё критериям определения "первой" строки.
Если вам нужна в результате всего запроса какая-то ещё сортировка не совпадающая с этим - заверните запрос в подзапрос и пересортируйте как нужно ещё раз.
select ... from (...) subquery order by ...
Ответ написан
Комментировать
@TyuReal
"Когда добавляю в ORDER BY product_id, city_id asc то сортирует по product_id"

ORDER BY city_id asc, product_id не пробовал? :)
Ответ написан
Ваш ответ на вопрос

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

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