MySQL에 최근 삽입된 레코드의 ID 가져오기
- MySQL 테이블에 최근 삽입된 레코드의
ID가져오기 -
LAST_INSERT_ID()함수를 사용하여 MySQL에서 마지막으로 삽입된 행의ID가져오기 -
MAX()함수를 사용하여 MySQL에 마지막으로 삽입된 행의ID가져오기 -
ORDER BY DESC를 사용하여 MySQL에 마지막으로 삽입된 행의ID가져오기
이 튜토리얼은 코드 예제와 함께 LAST_INSERT_ID(), MAX() 및 ORDER BY DESC라는 세 가지 접근 방식을 설명하고 MySQL에서 최근 삽입된 레코드의 ID를 가져오는 방법을 보여줍니다.
MySQL 테이블에 최근 삽입된 레코드의 ID 가져오기
MySQL 테이블에 최근 삽입된 레코드의 ID를 얻기 위해 사용할 수 있는 세 가지 방법이 있습니다. 이들 모두가 아래에 나열되어 있으며 다음 접근 방식을 사용하려면 테이블에 AUTO_INCREMENT 필드가 있어야 합니다.
LAST_INSERT_ID()기능을 사용하십시오.max()기능을 사용하십시오.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) 