我有以下 query
,我试图在某个呼吸空间内检索输入的变量的匹配项。
SELECT fthg, ftag, avover, avunder, whh, wha, whd
FROM full
WHERE (whh < ($home_odds + 0.05)
AND whh > ($home_odds - 0.05)
AND wha < ($away_odds + 0.05)
AND wha > ($away_odds -0.05)
AND whd < ($draw_odds + 0.05)
AND whd > ($draw_odds - 0.05))
有时这会返回 0 结果,因此在这种情况下,我想检索与所有三个最接近的匹配记录,但我不太确定如何将查询放在一起。
基本上,如果其他查询不返回结果,这是最后的手段,无论距离原始值多远,这个查询都会返回下一个最好的结果。
谢谢您的帮助
最佳答案
您的原始查询将更简单且更具可读性,因为:
SELECT
fthg,
ftag,
avover,
avunder,
whh,
wha,
whd
FROM full
WHERE ABS($home_odds - whh) < 0.05
and ABS($away_odds - wha) < 0.05
and ABS($draw_odds - whd) < 0.05
如果该查询未返回任何内容,则可以运行以下查询:
SELECT
fthg,
ftag,
avover,
avunder,
whh,
wha,
whd
FROM full
ORDER BY
ABS($home_odds - whh) + ABS($away_odds - wha) + ABS($draw_odds - whd)
LIMIT 1
它将返回与这三对字段的组合偏差最小的行。