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

MySQL에서 가장 낮은 ID를 가진 레코드를 삭제하는 방법

MySQL에서 가장 낮은 ID를 가진 레코드를 삭제하려면 DELETE 문에 ORDER BY 절과 LIMIT 절을 함께 사용하면 됩니다. 일반적으로 DELETE 문에서는 ORDER BY와 LIMIT를 자주 사용하지 않지만, 이 조합을 활용하면 특정 조건 없이도 정렬 기준에 따라 원하는 개수의 레코드만 손쉽게 삭제할 수 있습니다.

기본 문법

delete from yourTableName order by yourColumnName limit 1;

위 문법에서 yourColumnName으로 지정한 컬럼을 오름차순(ASC)으로 정렬한 뒤, 가장 앞에 위치한 레코드 한 건만 삭제합니다. 즉, ID 컬럼을 기준으로 정렬하면 가장 작은 ID를 가진 레코드가 제거됩니다.

예제 테이블 생성

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

mysql> create table DemoTable
(
    Id int,
    Name varchar(20)
);
Query OK, 0 rows affected (0.75 sec)

레코드 삽입

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

mysql> insert into DemoTable values(10,'Larry');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values(100,'Mike');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values(30,'Sam');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values(90,'Chris');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values(9,'Carol');
Query OK, 1 row affected (0.19 sec)

현재 데이터 확인

SELECT 문으로 테이블의 전체 레코드를 조회해 보겠습니다.

mysql> select *from DemoTable;

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

+------+-------+
| Id   | Name  |
+------+-------+
| 10   | Larry |
| 100  | Mike  |
| 30   | Sam   |
| 90   | Chris |
| 9    | Carol |
+------+-------+
5 rows in set (0.00 sec)

가장 낮은 ID의 레코드 삭제

아래 쿼리는 Id 컬럼을 기준으로 정렬한 후, 첫 번째 레코드 즉 가장 낮은 ID(여기서는 9)를 가진 레코드를 삭제합니다.

mysql> delete from DemoTable order by Id limit 1;
Query OK, 1 row affected (0.18 sec)

삭제 결과 확인

다시 전체 레코드를 조회하여 가장 낮은 ID의 레코드가 정상적으로 삭제되었는지 확인해 보겠습니다.

mysql> select *from DemoTable;

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

+------+-------+
| Id   | Name  |
+------+-------+
| 10   | Larry |
| 100  | Mike  |
| 30   | Sam   |
| 90   | Chris |
+------+-------+
4 rows in set (0.00 sec)

출력 결과에서 ID가 9인 'Carol' 레코드가 사라진 것을 확인할 수 있습니다. 이처럼 ORDER BY ... LIMIT 1 조합을 사용하면 서브쿼리나 별도의 MIN() 함수 조회 없이도 간단하게 최솟값 레코드를 삭제할 수 있습니다.