举个例吧,ID   Value2      40
3      50
4      60
5      70
6      80
查小于原价格X最大值  如果有,就取出来。如果没有匹配的就取出 大于原价格X的最小值。取出来例:原价格x为 55  则可以取出 50这个记录。 //取出小于X的最后一条记录(最大值)
如果 原价格x为 30 则要求取出40这个记录。  //取出第一个大于X的记录(最小值)SQL语句要怎么写。 是不是没办法用SQL单纯实现?谢谢回答。

解决方案 »

  1.   

    SELECT * FROM t1 order by abs(value-55) limit 1
      

  2.   


    mysql> use c1
    Database changed
    mysql> select * from t1;
    +----+---------+
    | id | value   |
    +----+---------+
    |  1 | 30.0000 |
    |  2 | 40.0000 |
    |  3 | 50.0000 |
    |  4 | 60.0000 |
    |  5 | 70.0000 |
    +----+---------+
    5 rows in set (0.00 sec)mysql> select * from t1 order by abs(value-55) limit 1;
    +----+---------+
    | id | value   |
    +----+---------+
    |  3 | 50.0000 |
    +----+---------+
    1 row in set (0.00 sec)mysql> select * from t1 order by abs(value-20) limit 1;
    +----+---------+
    | id | value   |
    +----+---------+
    |  1 | 30.0000 |
    +----+---------+
    1 row in set (0.00 sec)mysql>