mySQL запрос, чтобы найти, где время двух строк не соответствует критериям

Я искал немного помощи. У меня есть база данных SQL инцидентов, которые происходят. Каждый инцидент имеет действия и дату действия.

Incident_id   Action_id     Date
0001          76            11/1/2016 13:12:000
0001          18            11/1/2016 22:45:342
0002          76            11/2/2016 13:11:000
0002          18            11/1/2016 22:14:342
0003          76            11/1/2016 13:08:000
0003          18            11/3/2016 22:15:342

Что мне нужно знать, после того, как action_id 76 происходит, когда action_id 18 не происходит в течение 24 часов на том же incident_id. Используя этот критерий, запрос вернет incident_id 0003 из простой базы данных выше.

Я могу написать запрос, который сообщает мне, когда action_id 18 происходит после action_id 76, но этого недостаточно. Любая помощь была бы очень признательна.

Матовый

2 ответа

  1. NOT EXISTS приходить в голову:

    select i.*
    from incidents i
    where i.action_id = 76 and
          not exists (select 1
                      from incidents i2
                      where i2.incident_id = i.incident_id and
                            i2.action_id = 18 and
                            i2.date >= i.date and
                            i2.date < date_add(i.date, interval 1 day)
                     );
    
  2. Я думаю, что это сделает работу
    Edit: исправлено имя поля table_name и date в запросе

     SELECT * FROM incidents WHERE DATE > DATE_SUB(Date,INTERVAL 1 DAY) AND action_id=76