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

MySQL에서 두 열의 값이 같은 행을 삭제하는 방법

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를 실행하는 것이 안전합니다.