代码之家  ›  专栏  ›  技术社区  ›  Lluís Puig Ferrer

获取SQL中最接近的值

  •  -2
  • Lluís Puig Ferrer  · 技术社区  · 6 年前

    我有一张带水果和价格的桌子,例如:

    Apple - 1
    
    Melon - 3
    
    Orange - 10
    
    Pear - 5
    

    比如:

    SELECT * 
    FROM fruit
    WHERE condition
    

    任何帮助都将不胜感激。

    2 回复  |  直到 6 年前
        1
  •  0
  •   Gordon Linoff    6 年前

    这是你想要的吗?

    SELECT f.* 
    FROM fruit f
    ORDER BY ABS(f.price - 7)
    LIMIT 1;
    

    这会得到价格接近7的水果。当然,“7”是一个可以是任何值的参数。

        2
  •  0
  •   Caius Jard    6 年前

    好吧,这些评论几乎都有答案:

    SELECT * FROM fruit  
    WHERE abs(price-@searchprice) =
      (SELECT abs(price-@searchprice) 
      FROM fruit ORDER BY abs(price-@searchprice) LIMIT 1)
    

    子查询将从输入的价格(@searchprice-根据数据库/驱动程序组合的需要更改参数名称样式)查找到最接近1的实际价格