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

MySQL에서 두 열의 값을 비교해 조건에 맞는 레코드 조회하는 방법

MySQL에서 하나의 테이블에 있는 두 열(column)의 값을 서로 비교하고, 조건을 만족하는 레코드만 조회하는 방법을 소개합니다. WHERE 절에서 열끼리 직접 비교 연산자를 사용하면 아주 간단하게 구현할 수 있습니다.

1. 샘플 테이블 생성

먼저 두 개의 정수형 열을 가진 테이블을 생성해 보겠습니다.

mysql> create table DemoTable
-> (
-> Num1 int,
-> Num2 int
-> );
Query OK, 0 rows affected (0.54 sec)

2. 데이터 삽입

INSERT 명령을 사용해 테이블에 여러 개의 레코드를 추가합니다.

mysql> insert into DemoTable values(100,200);
Query OK, 1 row affected (0.13 sec)

mysql> insert into DemoTable values(200,100);
Query OK, 1 row affected (0.14 sec)

mysql> insert into DemoTable values(300,400);
Query OK, 1 row affected (0.15 sec)

mysql> insert into DemoTable values(400,300);
Query OK, 1 row affected (0.20 sec)

mysql> insert into DemoTable values(500,600);
Query OK, 1 row affected (0.17 sec)

mysql> insert into DemoTable values(600,500);
Query OK, 1 row affected (0.18 sec)

3. 전체 레코드 확인

SELECT 문으로 테이블에 저장된 모든 레코드를 조회해 보겠습니다.

mysql> select *from DemoTable;

출력 결과

위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.

+------+------+
| Num1 | Num2 |
+------+------+
| 100  | 200  |
| 200  | 100  |
| 300  | 400  |
| 400  | 300  |
| 500  | 600  |
| 600  | 500  |
+------+------+
6 rows in set (0.00 sec)

4. 두 열의 값을 비교하는 쿼리

WHERE 절에서 Num1 < Num2 조건을 지정하면, 첫 번째 열의 값이 두 번째 열보다 작은 레코드만 필터링할 수 있습니다.

mysql> select *from DemoTable where Num1 < Num2;

출력 결과

조건을 만족하는 레코드만 다음과 같이 반환됩니다.

+------+------+
| Num1 | Num2 |
+------+------+
| 100  | 200  |
| 300  | 400  |
| 500  | 600  |
+------+------+
3 rows in set (0.00 sec)

정리

MySQL에서는 WHERE 절에 두 열 이름을 비교 연산자(<, >, = 등)로 연결하기만 하면 행 단위로 열 값을 비교할 수 있습니다. 위 예제에서는 Num1이 Num2보다 작은 3개의 레코드(100/200, 300/400, 500/600)만 반환되었습니다. 반대로 더 큰 값을 찾으려면 > 연산자를, 두 값이 같은 경우는 = 연산자를 사용하면 됩니다. 이 기법은 가격 비교, 재고 대비 주문량 확인처럼 같은 행 안의 두 컬럼 값을 비교해야 하는 다양한 상황에서 유용하게 활용할 수 있습니다.