Domanda

mi chiedevo se ci fosse un modo semplice, con solo un'istruzione SQL per restituire gli ultimi tre risultati nella tabella, ma in che cioè ordine se ci sono risultati hundered che sarebbe tornato in ordine di 98, 99, 100 non semplicemente ordinare da id DECR e limite 3 che sarebbe tornato in ordine 100, 99, 98

Qualsiasi aiuto molto apprezzato.

P.S. in questo caso, consente di dire che non conosco la quantità di risultati e in realtà non voglio mandare 2 richieste SQL solo per trovare l'importo (per eventuali risposte OFFSET).

È stato utile?

Soluzione

Un modo potrebbe essere quello di utilizzare DESC e poi basta ordinarli di nuovo:

SELECT * FROM (SELECT * FROM some_table ORDER BY id DESC LIMIT 3) a ORDER BY id

Altri suggerimenti

Due opzioni, immagino.

  1. Si potrebbe utilizzare DESC di restituirli in ordine inverso, come lei ha affermato, e basta invertire nuovamente l'ordine nel codice dell'applicazione. Questo è potenzialmente il più efficiente, come si può fare in una singola query e può potenzialmente solo bisogno di leggere tre righe di un indice.

  2. È possibile prima trovare il numero di risultati nella tabella, poi fare un LIMIT , 3

Va bene se si ribalta di nuovo l'ordine originale?

SELECT * FROM (SELECT * FROM SOMETABLE ORDER BY ID DESC LIMIT 3) AS T ORDER BY ID;
Select * 
FROM (SELECT * FROM yourTABLE ORDER BY ID DESC LIMIT 0,3) as TempTable ORDER BY ID
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top