在mysql

时间:2018-03-26 19:55:55

标签: mysql sql

我正在寻找一种方法来选择指定值下的表中的最大id值。我正在尝试使用以下查询

select max(id) as 'maxid' from proveedor where 'id' < 6666

我期待的价值是3,但我得到7777.有不同的方法吗?

+-------+
|   id  |
+-------+
| 1     |
| 2     |
| 3     |
| 6666  |
| 7777  |
+-------+

3 个答案:

答案 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;