Obtenga la ID del último registro insertado en MySQL
-
Obtenga el
ID
del último registro insertado en la tabla MySQL -
Utilice la función
LAST_INSERT_ID()
para obtener elID
de la última fila insertada en MySQL -
Utilice la función
MAX()
para obtener elID
de la última fila insertada en MySQL -
Utilice el
ORDEN POR DESC
para obtener elID
de la última fila insertada en MySQL
Este tutorial explica tres enfoques denominados LAST_INSERT_ID()
, MAX()
y ORDER BY DESC
con ejemplos de código y demuestra cómo obtener el ID
del último registro insertado en MySQL.
Obtenga el ID
del último registro insertado en la tabla MySQL
Hay 3 formas que podemos usar para obtener una ID
del último registro insertado en la tabla MySQL. Todos estos se enumeran a continuación, y la tabla debe tener un campo AUTO_INCREMENT
para usar cualquiera de los siguientes enfoques.
- Utilice la función
LAST_INSERT_ID()
. - Utilice la función
max()
. - Utilizar la cláusula
ORDER BY DESC
.
Utilice la función LAST_INSERT_ID()
para obtener el ID
de la última fila insertada en MySQL
La función LAST INSERT ID()
se puede utilizar para obtener el ID
del último registro (fila) insertado o actualizado cuando se utiliza el comando INSERT
o UPDATE
en una tabla con el campo AUTO INCREMENT
.
Al preparar la tabla tb_courses
y llenarla con datos de muestra, entendámoslo.
Consulta de ejemplo:
# 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;
Producción :
+----+----------------------+
| ID | COURSE_NAME |
+----+----------------------+
| 1 | Introduction to Java |
| 2 | Python for Beginners |
| 3 | Database Systems |
+----+----------------------+
3 rows in set (0.00 sec)
Ahora, ejecute el siguiente comando para recuperar el ID
del último registro insertado.
Consulta de ejemplo:
SELECT LAST_INSERT_ID();
Producción :
+------------------+
| LAST_INSERT_ID() |
+------------------+
| 3 |
+------------------+
1 row in set (0.00 sec)
Devuelve el valor correcto, 3
es el último ID
insertado. Ahora, INSERTAMOS
algunos datos más e insertamos varias filas.
Consulta de ejemplo:
# insert data
INSERT INTO tb_courses (COURSE_NAME)
VALUES
('Introduction to Machine Learning'),
('Deep Learning'),
('Statistics');
# display data
SELECT * FROM tb_courses;
Producción :
+----+----------------------------------+
| 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)
Ejecute la siguiente consulta para obtener el último ID
insertado.
Consulta de ejemplo:
SELECT LAST_INSERT_ID();
Producción :
+------------------+
| LAST_INSERT_ID() |
+------------------+
| 4 |
+------------------+
1 row in set (0.00 sec)
Podemos ver la salida donde el método LAST_INSERT_ID()
devuelve un valor generado del primer registro, no del último registro. Solo obtenemos el último ID
insertado usando LAST_INSERT_ID()
si usamos una sola instrucción INSERT
para una fila.
Si usamos una sola instrucción INSERT
para más de una fila, la función LAST_INSERT_ID()
generará el valor generado solo para el primer registro insertado (consulte el resultado anterior). Recuerde, el ID
generado se mantiene por conexión
en un servidor.
El primer valor de AUTO INCREMENTO
generado para la declaración más reciente que influye en el campo AUTO INCREMENTO
por ese cliente es devuelto por el método ÚLTIMO INSERTAR ID ()
a ese cliente. Por lo tanto, el valor devuelto de LAST_INSERT_ID()
es por usuario, no afectado por otras declaraciones de otros usuarios ejecutadas en el servidor.
Utilice la función MAX()
para obtener el ID
de la última fila insertada en MySQL
Podemos usar la función MAX()
para obtener el último ID
insertado de la fila. No importa si usamos una sola instrucción INSERT
para una o varias filas para este método.
Primero, usamos la función MAX()
para llenar la tabla tb_courses
usando la instrucción INSERT
única de una fila.
Consulta de ejemplo:
INSERT INTO tb_courses (COURSE_NAME) VALUES ('Data Science');
SELECT MAX( ID ) FROM tb_courses;
Producción :
+-----------+
| MAX( ID ) |
+-----------+
| 7 |
+-----------+
1 row in set (0.02 sec)
Devolvió el valor 7
, que es correcto. Usamos una única instrucción INSERT
para varias filas y luego la función MAX()
para recuperar el último ID
insertado.
Consulta de ejemplo:
INSERT INTO tb_courses (COURSE_NAME)
VALUES
('Introduction to Recommender Systems'),
('Data Structures'),
('Analysis of Algorithms');
SELECT MAX( ID ) FROM tb_courses;
Producción :
+-----------+
| MAX( ID ) |
+-----------+
| 10 |
+-----------+
1 row in set (0.00 sec)
Devuelve el valor correcto, que es 10
.
Utilice el ORDEN POR DESC
para obtener el ID
de la última fila insertada en MySQL
La cláusula ORDER BY DESC
también se puede usar para ordenar datos en orden descendente usando el campo ID
y obteniendo el ID
de la primera fila (que era la última fila antes de ordenar).
Consulta de ejemplo:
SELECT ID FROM tb_courses ORDER BY ID DESC LIMIT 1;
Producción :
+----+
| ID |
+----+
| 10 |
+----+
1 row in set (0.05 sec)