MySQL中查询指定值以下的最大ID问题求助
解决MySQL查询小于指定值的最大id问题
哦,我一眼就发现问题所在了!你写的SQL语句里犯了一个很容易踩的小坑:
select max(id) as 'maxid' from proveedor where 'id' < 6666
这里的'id'被单引号包裹后,它不再代表表中的id列,而是一个字符串常量。MySQL在处理这个条件时,会把字符串'id'转换成数字(转换结果是0,因为字符串开头不是有效数字),0肯定小于6666,所以表中所有行都被纳入了查询范围,最终MAX(id)自然就返回了最大的7777。
正确的实现方法
只需要去掉id两边的单引号,直接引用列名即可:
SELECT MAX(id) AS maxid FROM proveedor WHERE id < 6666;
执行这条语句后,就会正确筛选出所有id小于6666的行,然后返回其中最大的id值3。
另一种可选写法
如果你想换一种方式实现,也可以通过排序后取第一行的方式得到结果,这种写法在某些大数据量场景下性能可能更优:
SELECT id AS maxid FROM proveedor WHERE id < 6666 ORDER BY id DESC LIMIT 1;
内容的提问来源于stack exchange,提问作者raptorandy
相关产品推荐
相关产品推荐

