MySQL에 최근 삽입된 레코드의 ID 가져오기

Mehvish Ashiq 2023년6월20일
  1. MySQL 테이블에 최근 삽입된 레코드의 ID 가져오기
  2. LAST_INSERT_ID() 함수를 사용하여 MySQL에서 마지막으로 삽입된 행의 ID 가져오기
  3. MAX() 함수를 사용하여 MySQL에 마지막으로 삽입된 행의 ID 가져오기
  4. ORDER BY DESC를 사용하여 MySQL에 마지막으로 삽입된 행의 ID 가져오기
MySQL에 최근 삽입된 레코드의 ID 가져오기

이 튜토리얼은 코드 예제와 함께 LAST_INSERT_ID(), MAX()ORDER BY DESC라는 세 가지 접근 방식을 설명하고 MySQL에서 최근 삽입된 레코드의 ID를 가져오는 방법을 보여줍니다.

MySQL 테이블에 최근 삽입된 레코드의 ID 가져오기

MySQL 테이블에 최근 삽입된 레코드의 ID를 얻기 위해 사용할 수 있는 세 가지 방법이 있습니다. 이들 모두가 아래에 나열되어 있으며 다음 접근 방식을 사용하려면 테이블에 AUTO_INCREMENT 필드가 있어야 합니다.

  1. LAST_INSERT_ID() 기능을 사용하십시오.
  2. max() 기능을 사용하십시오.
  3. ORDER BY DESC 절을 사용하십시오.

LAST_INSERT_ID() 함수를 사용하여 MySQL에서 마지막으로 삽입된 행의 ID 가져오기

LAST INSERT ID() 함수는 AUTO INCREMENT 필드가 있는 테이블에서 INSERT 또는 UPDATE 명령을 사용할 때 마지막으로 삽입되거나 업데이트된 레코드(행)의 ID를 가져오는 데 사용할 수 있습니다.

tb_courses 테이블을 준비하고 샘플 데이터로 채워서 이해해 봅시다.

쿼리 예:

# create a table
CREATE TABLE tb_courses (
      ID INT NOT NULL AUTO_INCREMENT,
      COURSE_NAME VARCHAR(255) NOT NULL,
      PRIMARY KEY (id)
);

# insert data
INSERT INTO tb_courses (COURSE_NAME) VALUES ('Introduction to Java');
INSERT INTO tb_courses (COURSE_NAME) VALUES ('Python for Beginners');
INSERT INTO tb_courses (COURSE_NAME) VALUES('Database Systems');

# display data
SELECT * FROM tb_courses;

출력:

+----+----------------------+
| ID | COURSE_NAME          |
+----+----------------------+
|  1 | Introduction to Java |
|  2 | Python for Beginners |
|  3 | Database Systems     |
+----+----------------------+
3 rows in set (0.00 sec)

이제 다음 명령을 실행하여 가장 최근에 삽입된 레코드의 ID를 검색합니다.

쿼리 예:

SELECT LAST_INSERT_ID();

출력:

+------------------+
| LAST_INSERT_ID() |
+------------------+
|                3 |
+------------------+
1 row in set (0.00 sec)

올바른 값을 반환합니다. 3은 마지막으로 삽입된 ID입니다. 이제 더 많은 데이터를 삽입하고 여러 행을 삽입합니다.

쿼리 예:

# insert data
INSERT INTO tb_courses (COURSE_NAME)
VALUES
('Introduction to Machine Learning'),
('Deep Learning'),
('Statistics');

# display data
SELECT * FROM tb_courses;

출력:

+----+----------------------------------+
| ID | COURSE_NAME                      |
+----+----------------------------------+
|  1 | Introduction to Java             |
|  2 | Python for Beginners             |
|  3 | Database Systems                 |
|  4 | Introduction to Machine Learning | <======================
|  5 | Deep Learning                    |
|  6 | Statistics                       |
+----+----------------------------------+
6 rows in set (0.00 sec)

다음 쿼리를 실행하여 가장 최근에 삽입된 ID를 가져옵니다.

쿼리 예:

SELECT LAST_INSERT_ID();

출력:

+------------------+
| LAST_INSERT_ID() |
+------------------+
|                4 |
+------------------+
1 row in set (0.00 sec)

LAST_INSERT_ID() 메서드가 마지막 레코드가 아닌 첫 번째 레코드의 생성된 값을 반환하는 출력을 볼 수 있습니다. 한 행에 단일 INSERT 문을 사용하는 경우 LAST_INSERT_ID()를 사용하여 마지막으로 삽입된 ID만 가져옵니다.

둘 이상의 행에 단일 INSERT 문을 사용하는 경우 LAST_INSERT_ID() 함수는 처음 삽입된 레코드에 대해서만 생성된 값을 출력합니다(위 출력 참조). 생성된 ID는 서버에서 연결당 기준으로 유지됩니다.

해당 클라이언트에 의해 AUTO INCREMENT 필드에 영향을 미치는 가장 최근 명령문에 대해 생성된 첫 번째 AUTO INCREMENT 값은 해당 클라이언트에 대한 LAST INSERT ID() 메소드에 의해 반환됩니다. 따라서 LAST_INSERT_ID()의 반환 값은 사용자별이며 서버에서 실행되는 다른 사용자의 다른 명령문에 영향을 받지 않습니다.

MAX() 함수를 사용하여 MySQL에 마지막으로 삽입된 행의 ID 가져오기

MAX() 함수를 사용하여 행의 마지막 삽입된 ID를 가져올 수 있습니다. 이 방법에 대해 하나 또는 여러 행에 대해 단일 INSERT 문을 사용하는지 여부는 중요하지 않습니다.

먼저 MAX() 함수를 사용하여 한 행의 단일 INSERT 문을 사용하여 tb_courses 테이블을 채웁니다.

쿼리 예:

INSERT INTO tb_courses (COURSE_NAME) VALUES ('Data Science');
SELECT MAX( ID ) FROM tb_courses;

출력:

+-----------+
| MAX( ID ) |
+-----------+
|         7 |
+-----------+
1 row in set (0.02 sec)

올바른 7 값을 반환했습니다. 여러 행에 대해 단일 INSERT 문을 사용한 다음 MAX() 함수를 사용하여 마지막으로 삽입된 ID를 검색합니다.

쿼리 예:

INSERT INTO tb_courses (COURSE_NAME)
VALUES
('Introduction to Recommender Systems'),
('Data Structures'),
('Analysis of Algorithms');

SELECT MAX( ID ) FROM tb_courses;

출력:

+-----------+
| MAX( ID ) |
+-----------+
|        10 |
+-----------+
1 row in set (0.00 sec)

올바른 값인 10을 반환합니다.

ORDER BY DESC를 사용하여 MySQL에 마지막으로 삽입된 행의 ID 가져오기

ORDER BY DESC 절은 ID 필드를 사용하고 첫 번째 행(정렬 전 마지막 행)에서 ID를 가져오는 내림차순으로 데이터를 정렬하는 데 사용할 수도 있습니다.

쿼리 예:

SELECT ID FROM tb_courses ORDER BY ID DESC LIMIT 1;

출력:

+----+
| ID |
+----+
| 10 |
+----+
1 row in set (0.05 sec)
Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

관련 문장 - MySQL Table