我正在尝试解决一个需要像这样的表格的问题:
--- LOG ---
user time status
0 001 ARRIVED
0 003 LEFT
0 009 ARRIVED
1 004 ARRIVED
0 012 LEFT
1 008 LEFT
并执行以下任务:对于每个 ARRIVAL 时间,为每个用户找到最近的 LEFT 时间。
user ARRIVED LEFT
0 001 003
0 009 012
1 004 008
但是我发现很难实现。
我正在尝试以某种方式将这两个查询结合在一起
SELECT *
FROM (
SELECT `user`, `time` FROM LOG
WHERE `status` = 'ARRIVED'
);
SELECT *
FROM (
SELECT `user`, `time` FROM LOG
WHERE `status` = 'LEFT' AND `user` = [USER FROM PREVIOUS TABLE] AND `time` >= [TIME FROM PREVIOUS TABLE]
ORDER BY `time` ASC
LIMIT 1
);