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)