我正在寻找一种方法来选择指定值下的表中的最大id值。我正在尝试使用以下查询
select max(id) as 'maxid' from proveedor where 'id' < 6666
我期待的价值是3,但我得到7777.有不同的方法吗?
+-------+
| id |
+-------+
| 1 |
| 2 |
| 3 |
| 6666 |
| 7777 |
+-------+
答案 0 :(得分:4)
typo
中有一个query
:
where 'id' < 6666
应该是(没有引号):
where id < 6666
所以以下工作符合预期:
select max(id) as 'maxid' from proveedor where id < 6666
<强>演示:强> SQLFiddle demo
答案 1 :(得分:3)
从'id'中删除单引号。使用单引号,MySQL将其视为字符串而不是列。如果列名包含特殊字符,则可以使用反引号。
select max(id) as 'maxid' from proveedor where id < 6666
答案 2 :(得分:0)
您的id
似乎存储为字符串。如果您愿意,可以转换为数字:
select max(id + 0) as maxid
from proveedor
where (id + 0) < 6666;
请注意,您在示例代码中滥用了单引号。我不相信这是你问题的根本原因。不过,您应该学习如何在SQL中正确使用引号。
如果您希望将值作为字符串,则可以执行以下操作:
select id as maxid
from proveedor
where (id + 0) < 6666
order by (id + 0) desc
limit 1;