MySQL Select 查询返回错误行

标签 mysql

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

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

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

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

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

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

最佳答案

我认为您的查询没有任何问题。它工作正常:

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;

关于MySQL Select 查询返回错误行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30308569/

相关文章:

php - 如何使用 php 和 html 显示 MySQL 数据库中的表

mysql排序顺序,需要稍微不同的结果

php - 对记录集的每个可能组合执行...

mysql - 在我的 mysql 表中输入 ID

java - 对于 5000 条记录表,类似 MySQL 的查询运行速度极慢

mysql - 获取 SQL 连接派生表以显示单行

c# - 如何从 GridView 中删除重复数据?

javascript - Ajax/PHP - 无法识别自动完成值

mysql - 如何在 SQL 中获取结果计数

php - Laravel-belongsToMany 关系时间戳