2
我有两个表。一张名为laps
的表格,记录了一辆汽车在一个轨道上完成的所有圈数以及一张名为best_time
的表格,该表格包含该圈中特定距离上的最快时间。例如,它将包含该圈中最快的1k,或最快的半英里。MySQL选择行,其中一个字段小于前一个记录,一个字段更大
我想从这些表中选择每个距离的最快时间进度。所以它会随着时间的推移显示你在那一圈的距离上的个人进展。例如,你最快的1k可能是在1月份设定的,然后在6月份和8月份再次打破。下面是best_times
表的结构是什么样子
best_time_id int(10)
lap_id int(11)
start_time int(10)
end_time int(10)
total_distance decimal(7,2)
total_elapsed_time decimal(11,2)
,我需要选择记录中,其中total_elapsed_time
低于此前的纪录和start_time
更大。这是我的查询到目前为止
SELECT `bt`.`total_distance`, `bt`.`total_elapsed_time`, `bt`.`start_time`
FROM `best_times` AS `bt`, `laps` AS `l`
WHERE (
SELECT COUNT(*) FROM `best_times` AS `bt2`
WHERE `bt2`.`total_distance` = `bt`.`total_distance`
AND `bt2`.`total_elapsed_time` <= `bt`.`total_elapsed_time`
AND `bt2`.`start_time` > `bt`.`start_time`
) <= 10 AND `l`.`lap_id` = `bt`.`lap_id` AND `l`.`car_id` = 1 ORDER BY `bt`.`total_distance` ASC, `bt`.`total_elapsed_time` desc
这种作品,但它选择不应该的记录。结果集是我恢复的一个例子是这样的
| total_distance | total_elapsed_time | start_time |
|----------------|--------------------|------------|
| 1000.00 | 99.15 | 1431344798 |
| 1000.00 | 98.25 | 1431604966 | This record shouldn't be here because although it's quicker it happened after the 91.40 time
| 1000.00 | 91.40 | 1431433535 |
我很接近,但任何人都可以看到我要去哪里错了。如果我需要提供更多信息,请告诉我。
感谢您的毅力:)这是我所需要的,通过解决方案阅读是有道理的 – Pattle
不客气,很高兴我们解决了它到底! – Jayvee