MySQL选择查询返回错误的行

时间:2015-05-18 16:36:34

标签: mysql

我想过滤我的表格以获取特定值。应始终显示下一个较低的值。

+----+-----------+-------+------------+
| id | productid | lvl   | value      |
+----+-----------+-------+------------+
|  2 | 7         | 10    | 100        |
|  3 | 7         | 5     | 50         |
|  6 | 7         | 1     | 25         |
+----+-----------+--

如果我搜索lvl 6,则应该输出5级。如果我搜索等级14,则应输出lvl 10。

尝试了以下查询,但没有一个能按我的意愿运行。例如,此查询适用于超过4的值。如果我使用低于4的值,我需要将desc更改为asc以获得正确的结果:

SELECT * FROM `levels` where lvl <= '6' ORDER BY lvl desc limit 1

使用sql查询返回下一个较低(或等于)的行的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

我认为你的查询没有错。它工作正常:

http://sqlfiddle.com/#!9/e567f/1

SELECT * FROM `levels` where lvl <= 6 ORDER BY lvl desc limit 1;

SELECT * FROM `levels` where lvl <= 14 ORDER BY lvl desc limit 1;

SELECT * FROM `levels_char` where lvl <= '6' ORDER BY lvl desc limit 1;

SELECT * FROM `levels_char` where lvl <= '14' ORDER BY lvl desc limit 1;