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

MySQL에서 두 값의 차이 절댓값이 특정 숫자보다 큰 레코드를 조회하는 방법

두 컬럼 값의 차이에 대한 절댓값이 특정 숫자보다 큰 레코드만 조회하고 싶다면, MySQL의 ABS() 함수와 WHERE 절을 함께 사용하면 됩니다. ABS() 함수는 숫자의 절댓값을 반환하므로, 두 값 중 어느 쪽이 큰지와 관계없이 차이의 크기만으로 조건을 걸 수 있습니다.

기본 문법

SELECT * FROM yourTableName
WHERE ABS(yourColumnName1 - yourColumnName2) >= yourCertainNumber;

예제 테이블 생성

먼저 실습용 테이블을 생성해 보겠습니다.

mysql> create table DemoTable
(
    Number1 int,
    Number2 int
);
Query OK, 0 rows affected (0.59 sec)

다음은 INSERT 명령을 사용하여 테이블에 샘플 데이터를 삽입하는 쿼리입니다.

mysql> insert into DemoTable values(10,20);
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable values(100,200);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values(400,300);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values(1000,500);
Query OK, 1 row affected (0.15 sec)

저장된 데이터 확인

SELECT 명령으로 테이블에 저장된 전체 레코드를 확인합니다.

mysql> select *from DemoTable;

위 쿼리는 다음과 같은 결과를 출력합니다.

+---------+---------+
| Number1 | Number2 |
+---------+---------+
| 10      | 20      |
| 100     | 200     |
| 400     | 300     |
| 1000    | 500     |
+---------+---------+
4 rows in set (0.00 sec)

절댓값 조건으로 레코드 조회하기

이제 두 값의 차이에 대한 절댓값이 특정 숫자보다 큰 레코드를 조회하는 쿼리를 작성해 보겠습니다. 여기서는 기준값으로 100을 사용하여 절댓값을 비교합니다.

mysql> select *from DemoTable where abs(Number1-Number2) > 100;

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

+---------+---------+
| Number1 | Number2 |
+---------+---------+
| 1000    | 500     |
+---------+---------+
1 row in set (0.02 sec)

결과 분석

각 행의 차이를 계산해 보면 다음과 같습니다.

- 10과 20의 차이: 절댓값 10 → 조건 불충족
- 100과 200의 차이: 절댓값 100 → 100보다 크지 않으므로 제외
- 400과 300의 차이: 절댓값 100 → 100보다 크지 않으므로 제외
- 1000과 500의 차이: 절댓값 500 → 조건 충족

따라서 두 값의 차이가 100보다 큰 (1000, 500) 레코드 하나만 결과로 반환됩니다.

참고 사항

조건 연산자는 목적에 따라 조정할 수 있습니다. 예를 들어 >=를 사용하면 차이가 정확히 100인 경우도 포함되며, <BETWEEN을 활용하면 반대로 차이가 작은 레코드나 특정 범위 내의 레코드도 손쉽게 조회할 수 있습니다.