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

MySQL에서 ID가 가장 높은 행을 선택하는 방법 – ORDER BY와 LIMIT 활용하기

MySQL에서 테이블 내 ID가 가장 큰 행을 조회하려면 ORDER BY 절과 LIMIT, OFFSET을 함께 사용하면 됩니다. 이 방법은 특정 컬럼을 기준으로 내림차순 정렬한 뒤, 첫 번째 행만 가져오는 원리로 동작합니다.

기본 문법

select *from yourTableName order by yourColumnName desc limit 1 offset 0;
  • order by ... desc: 지정한 컬럼을 기준으로 내림차순(큰 값부터) 정렬합니다.
  • limit 1: 결과 중 첫 번째 행 하나만 반환합니다.
  • offset 0: 첫 번째 행부터 시작한다는 의미입니다. 사실상 생략해도 결과는 동일합니다.

예제 테이블 생성하기

문법을 실제로 이해하기 위해 예제 테이블을 먼저 만들어 보겠습니다. 아래 쿼리로 직원 정보를 저장할 테이블을 생성합니다.

mysql> create table HighestIdOrderBy
   -> (
   -> EmployeeId int,
   -> EmployeeName varchar(200)
   -> );
Query OK, 0 rows affected (0.58 sec)

데이터 삽입하기

INSERT 명령어를 사용해 테이블에 직원 데이터를 추가합니다.

mysql> insert into HighestIdOrderBy values(200,'David');
Query OK, 1 row affected (0.20 sec)

mysql> insert into HighestIdOrderBy values(1000,'Bob');
Query OK, 1 row affected (0.18 sec)

mysql> insert into HighestIdOrderBy values(600,'John');
Query OK, 1 row affected (0.16 sec)

mysql> insert into HighestIdOrderBy values(300,'Johnson');
Query OK, 1 row affected (0.18 sec)

mysql> insert into HighestIdOrderBy values(100,'Carol');
Query OK, 1 row affected (0.12 sec)

전체 데이터 확인하기

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

mysql> select *from HighestIdOrderBy;

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

+------------+--------------+
| EmployeeId | EmployeeName |
+------------+--------------+
|        200 | David        |
|       1000 | Bob          |
|        600 | John         |
|        300 | Johnson      |
|        100 | Carol       |
+------------+--------------+
5 rows in set (0.00 sec)

가장 높은 ID를 가진 행 조회하기

이제 EmployeeId를 기준으로 내림차순 정렬하고, 상위 1개 행만 가져오는 쿼리를 실행합니다.

mysql> select *from HighestIdOrderBy order by EmployeeId desc limit 1 offset 0;

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

+------------+--------------+
| EmployeeId | EmployeeName |
+------------+--------------+
|       1000 | Bob          |
+------------+--------------+
1 row in set (0.00 sec)

결과에서 확인할 수 있듯이, 테이블에서 가장 큰 ID(1000)를 가진 'Bob'의 행이 정확히 한 건 반환되었습니다.

참고: MAX() 함수와의 차이점

단순히 최대 ID 값 자체만 필요하다면 SELECT MAX(EmployeeId) FROM HighestIdOrderBy;처럼 MAX() 함수를 사용하는 것이 더 간단하고 효율적입니다. 반면, 최대 ID를 가진 행 전체(모든 컬럼)를 가져와야 할 때는 위에서 소개한 ORDER BY ... DESC LIMIT 1 방식이 유용합니다.