2012-05-08 65 views
9

Básicamente estoy tratando de hacer una barra de "objetivo". El objetivo se determina al obtener la última entrada que hice en una tabla MySQL. Quiero obtener el ID de la última entrada por lo tanto.Obtener la última entrada en una tabla de MySQL

¿Cómo obtengo la última entrada en la tabla y luego obtengo la identificación de esa última entrada?

(Uso de PHP)

+0

¿Tiene un campo de incremento automático como un 'id'? –

+0

Necesita registrar una marca de tiempo para asegurarse de obtener la entrada más reciente. –

+0

@MichaelMior, ¡Absolutamente no! La marca de tiempo no tiene nada cerca de la resolución para garantizar esto. – Brad

Respuesta

25

Para obtener el mayor Identificación:

SELECT MAX(id) FROM mytable 

luego a que la fila:

SELECT * FROM mytable WHERE id = ??? 

O bien, puede hacerlo todo en una consulta:

SELECT * FROM mytable ORDER BY id DESC LIMIT 1 
+0

¡Gracias! Creo que otros lo hacían un poco más complicado de lo necesario. Supongo que mi pregunta podría haber sido mejor. Simplemente necesitaba la identificación más grande. ¡Gracias! – ComputerLocus

2

si el campo es de auto-incrementa entonces usted puede utilizar LAST_INSERT_ID

+0

Esto supone que acaba de insertar la fila. –

6

puede utilizar esta consulta para obtener los resultados que desea con esta consulta SQL tal como se utiliza en este ejemplo:

$sql = "SELECT user_id FROM my_users_table ORDER BY user_id DESC LIMIT 0,1"; 
+0

Gracias, pero usaré el de Eric, ¡aunque esto probablemente funcione! – ComputerLocus

+0

Está bien, amigo. Espero que este hilo resuelva tu problema correctamente =) – dotTutorials

2

para hacer esto de forma fiable, debe tener algún campo de la tabla que pueda examinar para determinar cuál es el último. Esto podría ser una marca de tiempo de cuando agregó el registro, un número de secuencia que aumenta continuamente (especialmente un número de secuencia de incremento automático), etc.

Entonces, supongamos que es un número de secuencia llamado "rec_seq". Usted escribiría algo así como:

select * from my_table 
where rec_seq=(select max(rec_seq) from my_table) 
+0

¡Se parece un poco a la respuesta de Eric, pero voy a tener que aceptar la respuesta de Eric! – ComputerLocus

+0

No hay problema, es un poco más simple, es la solución más fácil. – Jay

7

usted puede utilizar la función LAST_INSERT_ID(). ejemplo:

$sql = "SELECT * FROM mytable WHERE id = LAST_INSERT_ID()"; 
+0

Gracias, aunque usaré la respuesta de Eric pero, ¡parece que también funcionaría! – ComputerLocus

+3

nota sobre LAST_INSERT_ID: LAST_INSERT_ID da la identificación de la última fila insertada por la conexión actual, no las otras. – laltin

2

seleccionar todos los campos de la tabla en orden inverso y límite establecido 0,1 esto le dará último resultado de los datos de campo de tabla

2

Obtenga la última entrada de un usuario

'SELECT user_id FROM table_name WHERE user_id = '.$userid.' ORDER BY user_id DESC LIMIT 1'; 
Cuestiones relacionadas