2015-10-15 76 views
1

我试图在SQL中查找给定值的最接近的数字。我已经做了我的查询多个结果:SQL:通过关系查找给定值的最接近的数字

SELECT * 
FROM Cars 
ORDER BY ABS(price - $price) 

我知道我可以通过使用限制1,通过我有一个最接近给定值数限制表。但我怎么能包括关系?例如,当三辆或四辆汽车的价格相同时?具有相同价格的汽车数量是动态的,因此我无法指定某个LIMIT。

我也知道我可以使用SELECT TOP 1 WITH TIES,但我不能使用这个查询,因为我的数据库驱动程序不允许它。有没有人有另一个想法,如何做到这一点?

实施例:

  • 轿厢1 = 2000
  • 轿厢2 = 3000
  • 轿厢3 = 3000
  • 轿厢4 = 1500

当我想最靠近车3000,查询应该返回:

  • 车2
  • 车3

,但没有使用查询静态LIMIT,因为汽车与同价位的量,每次可以不同。由于

回答

5

如果你的驱动程序支持嵌套查询:

SELECT * 
FROM CARS 
WHERE ABS(price - $price) = (SELECT MIN(ABS(price - $price)) FROM CARS) 
+0

真棒男人,那没有的伎俩!不能相信这很容易。干杯 – jensbrulmans

相关问题