Seleccione la última fila en MySQL

¿Cómo puedo SELECT la última fila en una tabla MySQL?

Estoy INSERT datos y necesito recuperar un valor de columna de la fila anterior.

Hay un auto_increment en la tabla.

Sí, hay un auto_increment allí

Si desea la última de todas las filas en la tabla, ¡este es finalmente el momento en que MAX(id) es la respuesta correcta! Mas o menos:

 SELECT fields FROM table ORDER BY id DESC LIMIT 1; 

Tenga en cuenta que las tablas en bases de datos relacionales son solo conjuntos de filas. Y los conjuntos en matemáticas son colecciones desordenadas. No hay una primera o última fila; sin fila previa o fila siguiente.

Primero tendrá que ordenar su conjunto de filas desordenadas por algún campo, y luego estará libre de iterar a través del conjunto de resultados en el orden que usted definió.

Como tiene un campo de incremento automático, supongo que quiere que sea el campo de clasificación. En ese caso, es posible que desee hacer lo siguiente:

 SELECT * FROM your_table ORDER BY your_auto_increment_field DESC LIMIT 1; 

Vea cómo estamos primero ordenando el conjunto de filas desordenadas por your_auto_increment_field (o como se llame) en orden descendente. Luego, limitamos el conjunto de resultados a solo la primera fila con LIMIT 1 .

en tablas con muchas filas son dos consultas probablemente más rápido …

 SELECT @last_id := MAX(id) FROM table; SELECT * FROM table WHERE id = @last_id; 

Puede combinar dos consultas sugeridas por @spacepille en una sola consulta que se ve así:

 SELECT * FROM `table_name` WHERE id=(SELECT MAX(id) FROM `table_name`); 

Debería funcionar a toda velocidad, pero en las tablas INNODB es una fracción de milisegundo más lenta que ORDER + LIMIT.

Haga que simplemente use: PDO::lastInsertId

http://php.net/manual/en/pdo.lastinsertid.php

Si desea la más recientemente agregada, agregue una marca de tiempo y seleccione ordenada en orden inverso por la fecha y hora más alta, límite 1. Si desea ir por ID, ordene por ID. Si desea usar el que mysql_insert_id agregar, use mysql_insert_id .

 SELECT * FROM adds where id=(select max(id) from adds); 

Esta consulta solía buscar el último registro en su tabla.

Puede usar un OFFSET en un comando LIMIT :

 SELECT * FROM aTable LIMIT 1 OFFSET 99 

en caso de que su mesa tenga 100 filas, devuelva la última fila sin depender de una clave primaria