Interrogazione dei risultati dalla fine della tabella

-1

Il comportamento normale della tabella SQL consiste nell'aggiungere nuove righe alla fine della tabella. Voglio interrogare solo i risultati di una singola riga.

Quindi il comando mysql è

SELECT id FROM users WHERE country='india' LIMIT 1

questo mi darà il primo ingresso con il Paese India. Ma voglio ottenere l'ultima persona quindi ho usato l'ordine di DESC

SELECT id FROM users ORDER BY DESC WHERE country='india' LIMIT 1

Questo mi dà il risultato desiderato ma volevo sapere se è il modo perfetto per realizzarlo.

Che ordine fa effettivamente? Ottiene il risultato e lo ordina decrescente o esegue una query dalla fine della tabella?

    
posta Akash Kumar 30.01.2016 - 11:29
fonte

1 risposta

3

Stai facendo alcune supposizioni che non sono corrette.

Mysql non memorizza le righe alla fine della tabella: le righe sono memorizzate dove c'è spazio. Può essere alla fine, ma può anche essere nel mezzo, se le rotte sono state cancellate. E recupera in un ordine che può apparire ordinato.

Nella prima query che stai recuperando senza ordinare i risultati, potresti avere delle sorprese. Come quando un indice viene utilizzato su un'altra colonna e il primo risultato trovato non ha l'Id più alto.

A proposito di limitare i risultati, la clausola "limite" non fornisce i mezzi per darti "gli ultimi N risultati". Solo "la prima N" o "salta la prima M e dammi la seguente N".

Quindi, la risposta alla tua domanda è che devi fornire una clausola "order by" in modo che tu abbia i dati nell'ordine di cui hai bisogno.

E, per recuperare l'Id più alto devi ordinare decrescente e aggiungere "limite 1", come hai fatto tu.

La tua query non è corretta, perché devi ordinare per colonna. Questo è corretto:

SELECT id FROM users WHERE country='india' ORDER BY id DESC LIMIT 1
    
risposta data 30.01.2016 - 14:54
fonte

Leggi altre domande sui tag