una - Seleccione la última fila en MySQL
seleccionar el registro con el mayor valor en un campo sql (9)
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;
¿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.
¿Por qué todos se refieren al orden, al máximo, etc.?
Eso no es muy amigable teniendo en cuenta millones y millones de entradas.
Una solución más eficiente sería hacer un disparador que se agrega a una fila en una tabla separada. De esta forma, puede obtener el valor en O (1) vez.
Haga que simplemente use: PDO::lastInsertId
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.
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
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
.
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;
SELECT * FROM adds where id=(select max(id) from adds);
Esta consulta solía buscar el último registro en su tabla.