[英]sql multiple columns filtering duplicates by newest
我有一个SQL查询(sqlight3),可为我提供三重数据(名称,值,日期)。
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
我该如何实现?
大多数数据库支持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;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.