在其他值之前选择列的最大值

cgvd09ve  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(295)

假设我在mysql数据库中有一个名为“relocations”的表,我跟踪约会中用户的所有重新定位:

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!='“房间a”和userid与appointmenttypeid相同。
所以我可以从这个表中,得到括号内的行。
有什么想法吗?

ujv3wf0j

ujv3wf0j1#

你有一个方便的 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);

相关问题