MySQL에서 두 열의 값이 서로 같을 때 해당 행을 삭제하려면 DELETE 문과 WHERE 절을 함께 사용하면 됩니다. 이 글에서는 실제 예제를 통해 단계별로 살펴보겠습니다.
1. 예제 테이블 생성
먼저 이름과 두 개의 점수(Score1, Score2)를 저장할 테이블을 만들어 보겠습니다.
mysql> create table DemoTable
(
Name varchar(40),
Score1 int,
Score2 int
);
Query OK, 0 rows affected (2.71 sec)2. 샘플 데이터 삽입
INSERT 명령을 사용해 몇 개의 레코드를 추가합니다.
mysql> insert into DemoTable values('John',56,76);
Query OK, 1 row affected (0.66 sec)
mysql> insert into DemoTable values('Chris',77,77);
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values('David',89,98);
Query OK, 1 row affected (0.13 sec)여기서 주목할 점은 'Chris' 레코드입니다. Score1과 Score2가 모두 77로 동일한 값을 가지고 있습니다.
3. 현재 데이터 확인
SELECT 문으로 테이블의 모든 레코드를 조회합니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+-------+--------+--------+ | Name | Score1 | Score2 | +-------+--------+--------+ | John | 56 | 76 | | Chris | 77 | 77 | | David | 89 | 98 | +-------+--------+--------+ 3 rows in set (0.00 sec)
4. 두 열의 값이 같은 행 삭제하기
두 열의 값이 같은 행을 삭제하는 쿼리는 다음과 같습니다. WHERE 절에서 Score1 = Score2 조건을 지정하면 됩니다.
mysql> delete from DemoTable
where Score1=Score2;
Query OK, 1 row affected (0.29 sec)쿼리 실행 결과, Score1과 Score2 값이 동일했던 'Chris' 행 1개가 삭제되었습니다.
5. 삭제 후 결과 확인
테이블의 레코드를 다시 한번 조회해 확인해 보겠습니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+-------+--------+--------+ | Name | Score1 | Score2 | +-------+--------+--------+ | John | 56 | 76 | | David | 89 | 98 | +-------+--------+--------+ 2 rows in set (0.00 sec)
정리 및 참고 사항
두 열의 값이 같은 행을 삭제하는 핵심 원리는 간단합니다. DELETE 문의 WHERE 절에 비교하고자 하는 두 열을 등호(=)로 연결하면 됩니다.
- WHERE 절 생략 주의: WHERE 조건 없이 DELETE 문을 실행하면 테이블의 모든 행이 삭제되므로 반드시 조건을 포함해야 합니다.
- NULL 값 처리: NULL = NULL은 TRUE가 아닌 NULL로 평가되기 때문에, NULL 값이 있는 경우에는 IS NOT NULL 또는 <=> 연산자(NULL-safe 비교)를 활용하는 것이 좋습니다.
- 실행 전 백업 권장: 대량의 데이터를 다룰 때는 먼저 SELECT 문으로 삭제 대상 행을 미리 확인한 후 DELETE를 실행하는 것이 안전합니다.