下图是一个访问记录,记录了访问人(visiterid)和访问时间(visitDT),ID是主键
现在在查出访问人最近一次的访问记录,
以下SQL可以正确实现:
SELECT v.*
from visit v
left join visit v2 on v.visiterid=v2.visiterid and v.visitDT< v2.visitDT
where v2.visitDT is null
这是left join的一个用法,对于ID为2的那条记录,访问者 2的其他访问时间都小于2号记录的访问时间,而2号记录必须保留,因此V2的相关项都是空的。
注意以下两条语句的返回结果是不同的:
SELECT v.*
from visit v
left join visit v2 on v.visiterid=v2.visiterid and v.visitDT< v2.visitDT
SELECT v.*
from visit v
left join visit v2 on v.visiterid=v2.visiterid where v.visitDT< v2.visitDT
扩展问题:
- 如果是选最近的两条访问记录?
参考: