我有一个SQL查询(sqlight3),它为我提供了数据的tripels(名称,值,日期)。
select name, value, date from
"different things and conditions"
order by date desc
结果按日期排序,如下所示:
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 :(得分: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;