【问题标题】:How to get lastest result for each of distinct list?如何获得每个不同列表的最新结果?
【发布时间】:2016-10-26 09:10:59
【问题描述】:

我有一个 PostgreSQL 表。

我可以获得不同的产品和品牌:

SELECT DISTINCT product, brand FROM list

在 Django 之后,我得到了最新的价格:

查询中的 x:

SELECT price FROM list 
WHERE product = x.product AND brand = x.brand
ORDER BY ...
LIMIT 1

如何通过一次查询获得所有信息?

【问题讨论】:

  • 添加一些示例表数据,以及它的预期结果。 (以及格式化文本。)
  • 你想在 ORM 中这样做吗?
  • 我想要SQL或ORM,现在没关系,我只需要想法。

标签: sql django postgresql


【解决方案1】:

使用window functions

SELECT DISTINCT product, brand, FIRST_VALUE(price) OVER (PARTITION BY product, brand ORDER BY ...) AS latest_price
FROM list

【讨论】:

  • 奇怪,但它比主题中的代码运行得慢(首先:不同,然后是一个循环中的很多小查询)
  • @themis 如果可能,尝试在productbrand 上添加复合索引
猜你喜欢
  • 2020-03-25
  • 2013-02-09
  • 1970-01-01
  • 2018-11-08
  • 2010-09-13
  • 1970-01-01
  • 1970-01-01
  • 2016-08-29
  • 2023-03-14
相关资源
最近更新 更多