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

MySQL 테이블에서 최대 ID와 관련된 데이터를 조회하는 방법

MySQL에서 특정 컬럼을 기준으로 가장 큰 값(최대 ID)과 관련된 레코드를 가져오려면 ORDER BY ~ DESC로 내림차순 정렬한 뒤 LIMIT 절을 사용하면 됩니다. 기본적인 쿼리 형태는 다음과 같습니다.

SELECT * FROM yourTableName ORDER BY yourColumnName DESC LIMIT 1,1;

참고: LIMIT 1,1은 첫 번째 행(최대값)을 건너뛰고 그다음 행 한 개를 반환합니다. 즉, 아래 예제에서는 두 번째로 큰 값이 조회됩니다. 최대값 자체가 필요하다면 LIMIT 1(또는 LIMIT 0,1)을 사용하세요.

1. 테이블 생성하기

먼저 예제에 사용할 테이블을 생성합니다.

mysql> create table DemoTable
    -> (
    -> Alldata int
    -> );
Query OK, 0 rows affected (0.63 sec)

2. 데이터 삽입하기

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

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

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

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

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

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

3. 전체 레코드 확인하기

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

mysql> select *from DemoTable;

출력 결과

+---------+
| Alldata |
+---------+
|     303 |
|     560 |
|     100 |
|     490 |
|     498 |
+---------+
5 rows in set (0.00 sec)

4. 최대값 관련 레코드 조회하기

Alldata 컬럼을 내림차순으로 정렬한 뒤 LIMIT 1,1을 적용하는 쿼리는 다음과 같습니다.

mysql> select *from DemoTable order by Alldata DESC LIMIT 1,1;

출력 결과

+---------+
| Alldata |
+---------+
|     498 |
+---------+
1 row in set (0.00 sec)

내림차순으로 정렬하면 560 → 498 → 490 → 303 → 100 순서가 되므로, LIMIT 1,1은 최대값인 560을 건너뛰고 두 번째로 큰 값인 498을 반환합니다. 만약 최대값 자체를 조회하고 싶다면 다음과 같이 LIMIT 1만 사용하면 됩니다.

mysql> select *from DemoTable order by Alldata DESC LIMIT 1;

또한 MAX() 집계 함수를 사용하면 정렬 없이도 최대값을 간단히 구할 수 있습니다.

mysql> select MAX(Alldata) from DemoTable;