我正在尝试将表连接到其自身的子集,并且遇到了麻烦。我的输入包含ID和日期,如下所示:
2013-10-14 eca02319d91421445f82d570960c5d0c
2013-10-15 eca02319d91421445f82d570960c5d0c
2013-10-16 eca02319d91421445f82d570960c5d0c
2013-10-17 eca02319d91421445f82d570960c5d0c
2013-10-19 eca02319d91421445f82d570960c5d0c
2013-10-21 eca02319d91421445f82d570960c5d0c
我的目标是确定每个日期的相同ID的最后一个日期,例如:
Date ID Last Date
2013-10-21 eca02319d91421445f82d570960c5d0c 2013-10-19
2013-10-19 eca02319d91421445f82d570960c5d0c 2013-10-17
etc.
使用以下SQL,我得到以下输出:
select a.Day,a.entity, b.Day from Visitor a
LEFT OUTER JOIN Visitor b
on a.entity = b.entity
and b.day < a.day
where b.day is not null
output
2013-10-21 eca02319d91421445f82d570960c5d0c 2013-10-14
2013-10-21 eca02319d91421445f82d570960c5d0c 2013-10-15
2013-10-21 eca02319d91421445f82d570960c5d0c 2013-10-17
2013-10-21 eca02319d91421445f82d570960c5d0c 2013-10-19
2013-10-19 eca02319d91421445f82d570960c5d0c 2013-10-14
2013-10-19 eca02319d91421445f82d570960c5d0c 2013-10-15
为每个a.day实例只获取一条记录以及按降序处理b.day需要什么?
提前谢谢!
答案 0 :(得分:1)
尝试这样的事情:
SELECT distinct a.date, a.id, (select d.date from data d
where a.date > d.date AND a.id = d.id
order by d.date desc limit 1) as last_date
FROM data a where (select d.date from data d
where a.date > d.date AND a.id = d.id
order by d.date desc limit 1) is not null
ORDER by a.date desc;