본문 바로가기
MySql

MySQL 10 진수 필드로 실패한 MySql 쿼리보다 크거나 작음

by 베이스 공부 2021. 1. 7.
반응형

3 개의 열이있는 데이터베이스가 있습니다.

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

위도와 경도는 모두 십진수 필드로 설정됩니다. 나는 이와 유사한 쿼리를 실행하고 있지만 주어진 위도 / 경도 숫자보다 크거나 작은 것을 기준으로 필터링하지 않습니다.

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 ;

 

해결 방법

 

문제는 10 진수 값을 문자열 리터럴과 비교하도록하는 작은 따옴표로 열 이름을 래핑한다는 것입니다. 열 이름과 테이블 이름은 문자열 리터럴이 아닌 식별자이므로 작은 따옴표로 묶어서는 안됩니다.

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

 

참조 페이지 https://stackoverflow.com/questions/15823450

 

 

반응형

댓글