2015-02-05 58 views
0

我有一個SQL查詢(sqlight3),它給了我tripels(名稱,值,日期)的數據。sql multiple colums

select name, value, date from 
"different things and conditions" 
order by date desc 

按日期IST排序,看起來像這樣的結果:

name | value | date 
------------------- 
a | x  | 2015 
b | y  | 2014 
a | z  | 2013 
b | x  | 2012 
c | y  | 2011 

現在我想要的結果過濾,讓每一個名字是獨一無二的,我只得到最新的(按日期)的三倍。我期待結果

name | value | date 
------------------- 
a | x  | 2015 
b | y  | 2014 
c | y  | 2011 

我該如何實現這一目標?

+0

請用您正在使用的數據庫標記您的問題。 – 2015-02-05 12:45:31

+0

用mysql關起來,謝謝。 – Kaligule 2015-02-05 12:50:59

+0

注意到這是錯的,抱歉。意思是sqlight3。 – Kaligule 2015-02-05 13:12:06

回答

0

大多數數據庫支持ANSI標準的窗口功能,所以這可以使用row_number()做到:

select name, value, date 
from (select t.*, 
      row_number() over (partition by name order by date desc) as seqnum 
     from . . . 
    ) t 
where seqnum = 1; 

編輯:

MySQL不支持row_number()。這裏是另一種方法:

select name, 
     substring_index(group_concat(value order by date desc), ',', 1) as value 
     max(date) as date 
from . . . 
group by name; 
+0

看起來像mysql3不支持「row_number()」和「parition」,對不起。 – Kaligule 2015-02-05 13:03:56

+0

我很抱歉問,但是你碰巧也知道sqlight3的東西嗎? Substring_index在那裏不存在。 – Kaligule 2015-02-05 13:43:48