Obtenga la ID del último registro insertado en MySQL

Mehvish Ashiq 20 junio 2023
  1. Obtenga el ID del último registro insertado en la tabla MySQL
  2. Utilice la función LAST_INSERT_ID() para obtener el ID de la última fila insertada en MySQL
  3. Utilice la función MAX() para obtener el ID de la última fila insertada en MySQL
  4. Utilice el ORDEN POR DESC para obtener el ID de la última fila insertada en MySQL
Obtenga la ID del último registro insertado 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.

  1. Utilice la función LAST_INSERT_ID().
  2. Utilice la función max().
  3. 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)
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

Artículo relacionado - MySQL Table