2016-10-26 123 views
0

我有一个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 

我怎样才能得到所有这一切由一个查询?

+0

添加一些示例表数据,其预期的结果。 (以及格式化文本。) – jarlh

+0

你想在ORM中做到这一点? –

+0

我想要它在SQL或ORM中,现在没关系,我只需要想法。 – themis

回答

0

使用window functions

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

奇怪,但它的工作速度比主题中的代码慢(第一:不同,然后在一个循环中有很多小的查询) – themis

+0

@themis如果可能,请尝试在“产品”和“品牌”之间添加复合索引 –