Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 특정 값 기준 ±1 이내의 정수 조회하기

MySQL에서 특정 열의 값이 목표 값의 ±1 이내인 레코드를 조회하려면 BETWEEN -1 AND 1 조건을 활용하면 됩니다. 이 방법은 열 값에서 기준 값을 뺀 결과가 -1과 1 사이에 있는지 확인하는 방식으로 동작합니다.

예제 테이블 생성하기

먼저 예제에 사용할 테이블을 생성해 보겠습니다.

mysql> create table DemoTable
(
    Value int
);
Query OK, 0 rows affected (0.76 sec)

데이터 삽입하기

INSERT 명령을 사용해 몇 개의 레코드를 삽입합니다.

mysql> insert into DemoTable values(14);
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values(15);
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values(16);
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable values(17);
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable values(18);
Query OK, 1 row affected (0.09 sec)

전체 데이터 확인하기

SELECT 문으로 테이블의 모든 레코드를 조회합니다.

mysql> select *from DemoTable;

실행 결과는 다음과 같습니다.

+-------+
| Value |
+-------+
|    14 |
|    15 |
|    16 |
|    17 |
|    18 |
+-------+
5 rows in set (0.00 sec)

±1 이내의 정수 조회 쿼리

이제 기준 값(여기서는 17)을 기준으로 ±1 이내에 해당하는 정수를 찾는 쿼리입니다. 열 값에서 기준 값을 빼고 그 결과가 -11 사이인지 BETWEEN 연산자로 판별합니다.

mysql> select *from DemoTable
    where (Value-17) between -1 and 1;

실행 결과는 다음과 같습니다.

+-------+
| Value |
+-------+
|    16 |
|    17 |
|    18 |
+-------+
3 rows in set (0.03 sec)

결과를 보면 기준 값인 17을 포함하여 그보다 1 작은 16과 1 큰 18, 총 3개의 레코드가 반환된 것을 확인할 수 있습니다.

동작 원리 정리

이 쿼리의 핵심은 (Value - 17)이라는 산술 표현식입니다. 각 행마다 Value에서 17을 뺀 값이 계산되며, 그 결과가 -1(즉, Value = 16), 0(Value = 17), 1(Value = 18) 중 하나일 때만 조건을 만족하게 됩니다. 이처럼 BETWEEN 연산자와 산술 연산을 조합하면 특정 값 주변의 범위 검색을 간단하게 구현할 수 있습니다.