【问题标题】:SQL: Find closest number to given value with tiesSQL:找到与给定值最接近的数字
【发布时间】:2016-01-13 20:13:20
【问题描述】:

我正在尝试在 SQL 中找到与给定值最接近的数字。我已经查询了多个结果:

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

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

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

例子:

  • 汽车 1 = 2000
  • 汽车 2 = 3000
  • 汽车 3 = 3000
  • 汽车 4 = 1500

当我想要最接近 3000 的汽车时,查询应该返回:

  • 汽车2
  • 汽车3

但没有在查询中使用静态 LIMIT,因为每次相同价格的汽车数量可能不同。谢谢

【问题讨论】:

    标签: mysql sql database


    【解决方案1】:

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

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

    【讨论】:

    • 太棒了,成功了!不敢相信这很容易。干杯
    猜你喜欢
    • 2014-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多