2017-01-22 63 views
0

編輯不同行:我使用PostgreSQL的SQL SELECT基於兩列其中在第三列有最小值

我的查詢需要返回所有唯一行ID列和類型列。當有多個具有相同ID和類型的行時,它將返回時間列中具有最小值的行。

SELECT id, type, value FROM TableName 
GROUP BY MIN(time) 
ORDER BY id ASC, type ASC 

這是我迄今爲止,但我覺得我使用GROUP BY錯誤的方式

+0

請標記你正在使用的數據庫。 –

+0

在一些dbms中,這句話是不正確的。請標記你的dbms。 – McNets

+0

我的不好。我編輯了OP –

回答

0

我認爲你可以使用ROW_NUMBER標記與標識和類型的每個組合中的行具有RN = 1最小時間,然後使用WHERE子句過濾表:

SELECT id, type, value FROM 
(SELECT id, type, value, 
ROW_NUMBER() OVER(PARTITION BY id, type ORDER BY time) AS rn 
FROM TableName) a 
WHERE rn = 1 
0
Postgres的

支持distinct on。這通常是做你想做的最有效的方式:

SELECT DISTINCT ON (id, type) id, type, value 
FROM TableName 
ORDER BY id, type, time ;