假装我将此表保存在名为“ Relocations”的MySQL数据库上,该数据库可跟踪约会中用户的所有重定位:
UserId AppointmentTypeId History Location Time
------------------------------------------------------
[ 1 1 1 'Room A' 13:00 ]
1 1 2 'Room B' 13:01
[ 1 1 3 'Room A' 13:02 ]
1 1 4 'Room C' 13:03
1 1 5 'Room D' 13:05
[ 1 1 6 'Room A' 13:09 ]
2 1 1 'Room A' 13:00
[ 2 1 2 'Room A' 13:05 ]
2 1 3 'Room B' 13:10
我需要获取Location ='Room A'的所有行,但只有下一行是Location!='Room A'的行以及UserId和AppointmentTypeId相同。
所以我将从该表中获得方括号内的行。
有什么想法吗?
答案 0 :(得分:1)
您有一个方便的history
列,因此请使用left join
:
select r.*
from relocations r left join
relocations rnext
on rnext.userid = r.userid and rnext.AppointmentTypeId = r.AppointmentTypeId and
rnext.history = r.history + 1
where r.Location = 'Room A' and
(rnext.Location <> 'Room A' or rnext.Location is null);