Come posso SELECT
l'ultima riga in una tabella MySQL?Seleziona l'ultima riga in MySQL
Sono INSERT
dati di ing e ho bisogno di recuperare un valore di colonna dalla riga precedente.
C'è un auto_increment
nella tabella.
Come posso SELECT
l'ultima riga in una tabella MySQL?Seleziona l'ultima riga in MySQL
Sono INSERT
dati di ing e ho bisogno di recuperare un valore di colonna dalla riga precedente.
C'è un auto_increment
nella tabella.
Sì, c'è un auto_increment in là
Se si desidera che l'ultimo dei tutte le righe nella tabella, allora questo è finalmente il momento in cui MAX(id)
è la risposta giusta! Tipo di:
SELECT fields FROM table ORDER BY id DESC LIMIT 1;
http://stackoverflow.com/a/21683753/257319 –
Ho paura che questo si rallenti se è necessario ordinare milioni di righe, non è vero? – Slawa
Tenere presente che le tabelle nei database relazionali sono solo serie di righe. E gli insiemi in matematica sono collezioni non ordinate. Non esiste la prima o l'ultima riga; nessuna riga precedente o successiva.
Prima di tutto occorre ordinare il set di righe non ordinate per alcuni campi, quindi l'iterazione viene liberata attraverso il set di risultati nell'ordine definito.
Poiché si dispone di un campo di incremento automatico, presumo che si desideri che sia il campo di ordinamento. In tal caso, si consiglia di effettuare le seguenti operazioni:
SELECT *
FROM your_table
ORDER BY your_auto_increment_field DESC
LIMIT 1;
Guarda come stiamo prima l'ordinamento del set di righe non ordinate dal your_auto_increment_field
(o quello che avete chiamato) in ordine decrescente. Quindi limitiamo il set di risultati alla sola prima riga con LIMIT 1
.
Se si desidera aggiungere uno più recente, aggiungere un timestamp e selezionare ordinato in ordine inverso per data/ora più elevata, limite 1. Se si desidera passare per ID, ordinare per ID. Se si desidera utilizzare quello aggiunto, utilizzare mysql_insert_id
.
su tabelle con molte righe sono due query probabilmente più veloce ...
SELECT @last_id := MAX(id) FROM table;
SELECT * FROM table WHERE id = @last_id;
Make it semplicemente utilizzare: PDO::lastInsertId
Giusto. Le più decenti librerie di interfacce MySQL hanno metodi dedicati per questo, tuttavia questa domanda non è stata codificata in PHP, ma la sintassi generale di MySQL. – vzr
è possibile combinare due query suggerito da @spacepille in singola query che assomiglia a questa:
SELECT * FROM `table_name` WHERE id=(SELECT MAX(id) FROM `table_name`);
Dovrebbe funzionare rapidamente, ma sulle tabelle INNODB la frazione di un millisecondo è inferiore a ORDER + LIMIT.
questa risposta è una copia della risposta di @karthikeyan ... ha visto l'ora del post in ritardo ... – Dwza
@karthikeyan ha scritto la sua risposta quattro giorni fa e ho risposto a questa domanda nel dicembre 2015. – vzr
no, ho modificato e corretto alcune ortografie 4 giorni fa ... la data del post è il 2014 "ha risposto il 14 giugno alle 9: 41' questo è circa 1 anno e 6 mesi prima :) – Dwza
SELECT * FROM adds where id=(select max(id) from adds);
Questa query è stata utilizzata per recuperare l'ultimo record nella tabella.
Perché tutti si riferiscono all'ordine, al massimo, ecc.?
Questo non è molto cpu friendly considerando milioni e milioni di voci.
Una soluzione più efficiente farebbe un trigger che si aggiunge a una riga in una tabella separata. In questo modo puoi ottenere il valore al tempo O (1).
Definire "ultima riga". Quello con l'ID più alto? O l'ultimo aggiunto? – EboMike
Cosa indica l'ultima riga: c'è una colonna auto_increment o DATETIME nella tabella? –
Sì, c'è un 'auto_increment' qui. Mi piacerebbe l'ultimo aggiunto. – esqew