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