我有一个数据库表,我想在其中选择与一对提供的值(无论是正值还是负值)最接近的条目。
提供的值:
num1 = 2.5, num2 = 10.2
相比:
[0] num1 = 1.1, num2 = 11.0
[1] num1 = 2.5, num2 = 14.1
[2] num1 = 2.4, num2 = 10.5
[3] num1 = 3.2, num2 = 10.3
我正在寻找的查询将返回行 [2]。事件虽然有几个更接近的值,但最接近的对将是 [2]。
我想在 SQL 选择语句中处理这个问题。这就是我所拥有的,但在比较两对数字时并没有完全到达那里。
(SELECT * FROM table WHERE num1 < 2.5 ORDER BY num1 DESC LIMIT 1)
UNION ALL
(SELECT * FROM table WHERE num1 >= 2.5 ORDER BY num1 LIMIT 1)
UNION ALL
(SELECT * FROM table WHERE num2 < 10.2 ORDER BY num2 DESC LIMIT 1)
UNION ALL
(SELECT * FROM table WHERE num2 >= 10.2 ORDER BY num2 LIMIT 1)
这给了我 4 场接近的比赛,但不是最接近的比赛。我确信我的语法遗漏了一些东西,但我没有找到返回单个最接近匹配项的技巧。
所有想法都表示赞赏。