簡體   English   中英

MySQL 選擇一行,其中一個字段小於前一條記錄,一個字段大於

[英]MySQL select row where one field is less than the previous record and one field is greater

我有兩張桌子。 一個稱為laps的表,它保存了汽車在賽道上完成的所有圈數的記錄,以及一個名為best_time的表,其中包含該圈某些距離的最快時間。 例如,它將包含該圈中最快的 1k,或最快的半英里。

我想從這些表中選擇每個距離最快的時間進展 因此,它會隨着時間的推移顯示您在該圈上該距離的個人進步。 例如,您最快的 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小於前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 |

我很接近,但誰能看到我哪里出錯了。 如果我需要提供更多信息,請告訴我。

這將顯示經過時間小於所有先前經過時間的所有行,按汽車 = 1 的總距離和圈數 id:

SELECT `bt`.`total_distance`, `bt`.`total_elapsed_time`, `bt`.`start_time` 
FROM `best_times` AS `bt`, `laps` AS `l` 
WHERE `bt`.`total_elapsed_time` <= (Select min(`bt2`.`total_elapsed_time`) from `best_times` AS `bt2` where `bt2`.`start_time` <= `bt`.`start_time` 
AND `bt2`.`total_distance` = `bt`.`total_distance`  )
AND `l`.`lap_id` = `bt`.`lap_id` 
AND `l`.`car_id` = 1 
ORDER BY `bt`.`total_distance` ASC, `bt`.`total_elapsed_time` desc

我不太確定什么是 lap_id,也許它可以被刪除

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM