2016-11-09 50 views
0

我正在尋找一點幫助。我有一個事件發生的SQL數據庫。每個事件都有行動和行動日期。mySQL查詢找到兩行時間不符合標準

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在同一incident_id的24小時內不會發生。使用這個標準,查詢將從上面的簡單數據庫返回incident_id 0003。

我可以寫一個查詢,告訴我什麼時候action_id 18發生在action_id 76之後,但這還不夠。任何幫助將不勝感激。

馬特

回答

0

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) 
       ); 
+0

錯誤: '1'附近的語法不正確。 – Mattrajotte

+0

@Mattrajotte。 。 。語法對我來說很好。你確定你在使用MySQL嗎? –

0

我認爲,這將做的工作
編輯:查詢更正表名和日期字段名稱

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

錯誤:'1'附近的語法不正確。 – Mattrajotte

+0

我已經更新了答案,請嘗試調試查詢。 table_name或其他東西必須有錯誤@Mattrajotte –

+0

這不起作用。也許服務器不是MySQL ...另外,18和76不是唯一的action_id,所以我相信這會返回任何action_id。 – Mattrajotte