我是初学者,看到这样一个问题,还请各位指教有A,B,C三个卡点,不考虑方向,当车经过时会记录车牌号,三个点之间行驶的理论时间为30分钟,三个点采集的数据上传到同一个表中 表的字段有ID,DIR(就是卡点A或B或C),CARNO(车牌号),TRATIME(通过时间) 
另外表中的数据有至少5000万条记录不限方式,求套牌车。也就是在两点之间出现时间小于30分钟的车,排除同一点的比较求思路 求方案

解决方案 »

  1.   

    --表的字段有ID,DIR(就是卡点A或B或C),CARNO(车牌号),TRATIME(通过时间)  select a.carno from table1 as a, table1 as b
      where a.id<b.id and
            a.carno=b.carno and
            a.dir<b.dir and
            时间差<30分钟--各数据库时间计算函数不同
      

  2.   

    select a.carno from table1 as a, table1 as b
      where a.id<b.id and
      a.carno=b.carno and
      a.dir!=b.dir and
      时间差<30分钟--订正,id和dir不能都用<
      

  3.   

    楼上写的sql不会出现笛卡尔积吗?
    ps 5000万的数据量
    最好做个索引
      

  4.   

    --表的字段有ID,DIR(就是卡点A或B或C),CARNO(车牌号),TRATIME(通过时间)   select a.carno from table1 as a, table1 as b
      where a.id<b.id and
      a.carno=b.carno and
      a.dir<b.dir and
      时间差<30分钟--各数据库时间计算函数不同