2016-10-26 60 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如果可能,請嘗試在「產品」和「品牌」之間添加複合索引 –