简体   繁体   English

联接到同一表的子集

[英]Join to subset of same table

I'm trying to join a table to a subset of itself, and am having trouble. 我正在尝试将表联接到自身的子集,并且遇到了麻烦。 My input contains an ID and a date as follows: 我的输入包含一个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

My goal is to determine the last prior date seen for the same id for each date, such as: 我的目标是确定每个日期具有相同ID的上次查看日期,例如:

     Date          ID                                 Last Date
  2013-10-21    eca02319d91421445f82d570960c5d0c     2013-10-19

  2013-10-19    eca02319d91421445f82d570960c5d0c     2013-10-17
  etc.

Using the following SQL, I get the output below: 使用以下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

What is required to get only a single record for each instance of a.day as well as process b.day in descending order? 对于a.day的每个实例以及按降序处理b.day的每个实例仅获取一条记录的要求是什么?

Thank you in advance! 先感谢您!

Try something like this: 尝试这样的事情:

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;

SQL Fiddle SQL小提琴

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM