Mysql 如何仅选择小于“目标”值的最近值?

Mysql 如何仅选择小于“目标”值的最近值?,mysql,Mysql,我正在尝试筛选历史Betfair数据。 我想为每个项目获得一条完整描述的记录。 我使用的SQL为每个项目提供了几个记录,每个记录都有不同的最新记录。 已过滤最新获取的值,以给出小于DT实际值的值,这两个值都是日期/时间。 我看过其他帖子,但我的能力水平与我的热情不相称 我目前正在使用: SELECT Bfinf_other_150126to150201_150204124439.* FROM Bfinf_other_150126to150201_150204124439 WHERE (((Bfi

我正在尝试筛选历史Betfair数据。 我想为每个项目获得一条完整描述的记录。 我使用的SQL为每个项目提供了几个记录,每个记录都有不同的最新记录。 已过滤最新获取的值,以给出小于DT实际值的值,这两个值都是日期/时间。 我看过其他帖子,但我的能力水平与我的热情不相称

我目前正在使用:

SELECT Bfinf_other_150126to150201_150204124439.*
FROM Bfinf_other_150126to150201_150204124439
WHERE (((Bfinf_other_150126to150201_150204124439.FULL_DESCRIPTION) Like "English Soccer/Barclays Premier League*") 
    AND ((Bfinf_other_150126to150201_150204124439.LATEST_TAKEN) < [DT ACTUAL_OFF]) 
    AND ((Bfinf_other_150126to150201_150204124439.SPORTS_ID)="1") 
    AND ((Bfinf_other_150126to150201_150204124439.EVENT)="Correct Score") 
    AND ((Bfinf_other_150126to150201_150204124439.IN_PLAY)="pe"))
ORDER BY Bfinf_other_150126to150201_150204124439.EVENT_ID, Bfinf_other_150126to150201_150204124439.FULL_DESCRIPTION, Bfinf_other_150126to150201_150204124439.SELECTION, Bfinf_other_150126to150201_150204124439.LATEST_TAKEN DESC;

这就给我留下了每个项目的多条记录,而我只希望记录的最新\u take值最接近DT ACTUAL \u OFF的值,因此在您的查询中,我只是更改了order BY子句中的顺序,因此最新\u take是第一个排序参数。然后我添加了一个限制1,这样它只返回一个结果。我想这应该是你想要的

SELECT
    Bfinf_other_150126to150201_150204124439.*
FROM
    Bfinf_other_150126to150201_150204124439
WHERE
    (((Bfinf_other_150126to150201_150204124439.FULL_DESCRIPTION) Like "English Soccer/Barclays Premier League*") AND
    ((Bfinf_other_150126to150201_150204124439.LATEST_TAKEN)<[DT ACTUAL_OFF]) AND
    ((Bfinf_other_150126to150201_150204124439.SPORTS_ID)="1") AND
    ((Bfinf_other_150126to150201_150204124439.EVENT)="Correct Score") AND
    ((Bfinf_other_150126to150201_150204124439.IN_PLAY)="pe"))
ORDER BY
    Bfinf_other_150126to150201_150204124439.LATEST_TAKEN DESC,
    Bfinf_other_150126to150201_150204124439.EVENT_ID,
    Bfinf_other_150126to150201_150204124439.FULL_DESCRIPTION,
    Bfinf_other_150126to150201_150204124439.SELECTION
LIMIT 1;
为了清楚起见,我简化了问题:

SELECT   
Bfinf_other_150126to150201_150204124439.FULL_DESCRIPTION, Bfinf_other_150126to150201_150204124439.SELECTION, Bfinf_other_150126to150201_150204124439.ODDS, Bfinf_other_150126to150201_150204124439.LATEST_TAKEN
FROM Bfinf_other_150126to150201_150204124439   
WHERE   
(((Bfinf_other_150126to150201_150204124439.SPORTS_ID)="1") AND ((Bfinf_other_150126to150201_150204124439.EVENT)="Correct Score") AND ((Bfinf_other_150126to150201_150204124439.IN_PLAY)="pe") AND ((Bfinf_other_150126to150201_150204124439.FULL_DESCRIPTION) Like "English Soccer/Barclays Premier League*") AND ((Bfinf_other_150126to150201_150204124439.LATEST_TAKEN)<[DT ACTUAL_OFF]))  
ORDER BY    
Bfinf_other_150126to150201_150204124439.EVENT_ID, Bfinf_other_150126to150201_150204124439.FULL_DESCRIPTION, Bfinf_other_150126to150201_150204124439.SELECTION, Bfinf_other_150126to150201_150204124439.LATEST_TAKEN DESC; 
给出:

完整描述-选择-赔率-最新拍摄

英格兰足球/巴克莱超级联赛/赛程1月31日/赫尔诉纽卡斯尔0-0 9.2 31-01-2015 12:34:52

英格兰足球/巴克莱超级联赛/赛程1月31日/赫尔诉纽卡斯尔0-0 9.8 28-01-2015 03:09:13

英格兰足球/巴克莱超级联赛/赛程1月31日/赫尔诉纽卡斯尔0-0 10.5 25-01-2015 19:19:35

英格兰足球/巴克莱超级联赛/赛程1月31日/赫尔诉纽卡斯尔0-0 9.4 24-01-2015 11:51:58

英格兰足球/巴克莱超级联赛/赛程1月31日/赫尔诉纽卡斯尔0-19.231-01-2015 12:45:05

英格兰足球/巴克莱超级联赛/赛程1月31日/赫尔诉纽卡斯尔0-19.6 31-01-2015 12:00:57

英格兰足球/巴克莱超级联赛/赛程1月31日/赫尔诉纽卡斯尔0-19 31-01-2015 11:50:25

英格兰足球/巴克莱超级联赛/赛程1月31日/赫尔诉纽卡斯尔0-18.8 30-01-2015 18:26:06

英格兰足球/巴克莱超级联赛/赛程1月31日/赫尔诉纽卡斯尔0-21631-01-2015 12:45:05

英格兰足球/巴克莱超级联赛/赛程1月31日/赫尔诉纽卡斯尔0-216.5 31-01-2015 12:43:22

我需要第1、5和9行
即,对于每场比赛的完整描述,在比赛开始前最晚的最长时间内,正确的分数选择概率[DT ACTUAL_OFF.

谢谢Frank。这会给出错误消息:查询表达式'Bfinf_other150126to150201_150204124439.SELECTION LIMIT!'中的语法错误缺少运算符。我认为更改ORDER BY子句将不起作用,因为完整描述有多个选择,每个选择都有自己的最新选择,即日期/时间,并且必须是结束st to DT ACTUAL\u OFFEVENT\u ID DT ACTUAL\u OFF FULL\u描述选择最新拍摄时间19:00跑步18:55 19:00跑步28:50 19:00跑步38:00 2 10:30跳跃10:29 2 10:30跳跃5 10:20 2 10:30跳跃4 10:15我想要的回报是第一和第四个记录。我想答案大致是这样的:所以我在玩这是我的荣幸。