2012-05-08 10 views
9

Sto praticamente cercando di fare una barra "obiettivo". L'obiettivo è determinato dall'ottenere l'ultima voce che ho creato in una tabella MySQL. Voglio quindi ottenere l'ID dell'ultima voce.Ottieni l'ultima voce in un tavolo MySQL

Come ottenere l'ultima voce nella tabella e ottenere l'ID dall'ultima voce?

(Utilizzo di PHP)

+0

Hai un campo auto incrementale come un 'id'? –

+0

È necessario registrare un timestamp per accertarsi di ottenere la voce più recente. –

+0

@MichaelMior, Assolutamente no! Il timestamp non ha nulla vicino alla risoluzione per garantire questo. – Brad

risposta

25

Per ottenere il massimo id:

SELECT MAX(id) FROM mytable 

Quindi per ottenere la riga:

SELECT * FROM mytable WHERE id = ??? 

Oppure, si potrebbe fare tutto in una query:

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

Grazie! Penso che gli altri lo rendessero un po 'più complicato di quanto avrebbe dovuto essere. Credo che la mia domanda avrebbe potuto essere migliore. Avevo semplicemente bisogno del più grande id. Grazie! – ComputerLocus

2

se il campo è auto-incrementato quindi è possibile utilizzare LAST_INSERT_ID

+0

Questo presuppone che tu abbia appena inserito la riga. –

6

è possibile utilizzare questa query per ottenere i risultati desiderati con questa query SQL come usato in questo esempio:

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

Grazie, ma userò Eric, anche se probabilmente funzionerebbe! – ComputerLocus

+0

Va bene, amico. Spero che questo thread abbia risolto il problema correttamente =) – dotTutorials

2

Per fare questo in modo affidabile, è necessario avere un po 'di campo nella tabella che si può esaminare per determinare quale è l'ultimo. Questo potrebbe essere un timestamp di quando hai aggiunto il record, un numero di sequenza che aumenta continuamente (specialmente un numero di sequenza autoincrementante), ecc.

Quindi, supponiamo che sia un numero di sequenza chiamato "rec_seq". Faresti scrivere qualcosa di simile:

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

Sembra una risposta come la risposta di Eric ma dovrò prendere la risposta di Eric! – ComputerLocus

+0

Nessun problema, la sua è leggermente più semplice, è la soluzione più semplice. – Jay

7

è possibile utilizzare la funzione LAST_INSERT_ID(). Esempio:

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

Grazie, anche se userò quello a cui ha risposto Eric, ma sembra che funzionerebbe pure! – ComputerLocus

+3

nota su LAST_INSERT_ID: LAST_INSERT_ID fornisce l'ID dell'ultima riga inserita dalla connessione corrente, non gli altri. – laltin

2

selezionare tutti i campi dalla tabella in ordine inverso e limite fissato a 0,1 Questo vi darà ultimo risultato dei dati di campo tabella

2

Ricevi le ultime ingresso di un utente

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