我正在尝试找到一种很好的方法来查找在事件类型 B 和 C 之间同时发生的所有类型 A 的事件。
此外,事件 B 和 C 必须共享一个 process_id。
每个 process_id 组将有一个 B 事件和一个 C 事件。
表结构如下所示:
CREATE TABLE IF NOT EXISTS `eventlog` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`time` datetime NOT NULL,
`process_id` varchar(20) NOT NULL,
`event` varchar(25) DEFAULT NULL,
`data` varchar(45) DEFAULT NULL,
)
我的尝试看起来像这样:
SELECT q3.time, q3.event, q3.process_id, q3.data
FROM `eventlog` as q1, `eventlog` as q2, `eventlog` as q3
WHERE q1.process_id=q2.process_id AND q1.process_id=q3.process_id
AND q1.event='EVENTB' AND q2.event='EVENTC' AND q3.event='EVENTA'
AND q3.time BETWEEN q1.time AND q2.time
当我运行它时,它挂起。关于更有效或更固定的方法来做到这一点的任何想法?
谢谢!