mysql - 大于和小于 MySql 查询因小数字段而失败

标签 mysql

我有一个包含 3 列的数据库:

user_id | lat      | lon
1       |-1.403976 | 53.428692
2       |-1.353276 | 55.224692
etc etc       

lat 和 lon 都设置为十进制字段。我正在运行一个与此类似的查询,但它不是基于大于和小于给定的纬度/经度数字进行过滤:

SELECT * FROM `table` WHERE `lat` < '-1.399999' AND 'lat' > '-1.300000' 
AND 'lon' < '55.555555' AND > '53.000000'

这个查询只返回表中的每一行,我不知道为什么?与字段设置为小数有关吗?

我希望有人能提供帮助 - 如果您知道的话,我知道这可能是一个简单的答案。

根据评论 - 这是创建表:

CREATE TABLE IF NOT EXISTS `members` (
`user_id` int(10) NOT NULL AUTO_INCREMENT,
`lat` decimal(8,6) NOT NULL,
`lon` decimal(8,6) NOT NULL,
UNIQUE KEY `user_id` (`user_id`),
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=136 ;

最佳答案

问题是您用单引号将列名括起来,强制将十进制值与字符串文字进行比较。列名和表名是标识符而不是字符串文字,因此它们不应该用单引号引起来。

AND `lat` > '-1.300000' 
AND `lon` BETWEEN '55.555555' AND '53.000000' -- use between here

关于mysql - 大于和小于 MySql 查询因小数字段而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15823450/

相关文章:

php - 查找 MySQL 中使用索引的需要

mysql - 指定的字符串不符合电子邮件地址所需的格式。有什么解决办法吗?

php - 数据未正确来自数据库

mysql 对状态字段进行分组

Mysql 触发器在两个连接的表上插入

php - 如何使用 PHP 从 MySQL 数据库获取响应

PHP MYSQL "merging"变量

mysql - SQl查询连接具有相同ID但具有相同日期字段的不同值的多行

php - 嵌套子查询中的 MySQL 变量

mysql - 在mysql中按月和年比较日期