Mysql
 sql >> Database >  >> RDS >> Mysql

Mysql:l'ordine dei risultati con select da è diverso dall'ordine dei risultati con select * from

Questo è corretto e in base alla progettazione:se non chiedi l'ordinamento, il server non si preoccupa dell'ordinamento (l'ordinamento può essere un'operazione costosa) e restituirà le righe nell'ordine che ritiene opportuno. Senza un ordine richiesto, il modo in cui i record vengono ordinati può anche differire da una query all'altra (sebbene non sia troppo probabile).

L'ordine non è assolutamente casuale:è semplicemente il modo in cui le righe escono dalla query e, come puoi vedere, anche modifiche minori possono modificare in modo significativo questo disordine. Questo ordinamento "non definito" dipende dall'implementazione, è imprevedibile e non dovrebbe essere considerato affidabile.

Se vuoi che gli elementi vengano ordinati, usa il ORDER BY clausola (questo è il suo scopo) - es.

SELECT name FROM difficulties ORDER BY name ASC;

Ciò restituirà sempre il risultato ordinato per nome, in ordine crescente. Oppure, se vuoi che siano ordinati dalla chiave primaria, per ultimo in cima, usa:

SELECT name FROM difficulties ORDER BY id DESC;

Puoi anche ordinare per funzione, se effettivamente vuoi ordine casuale, fallo (avvertenza:performance orribile con tabelle grandi):

SELECT name FROM difficulties ORDER BY RAND();

Per maggiori dettagli consulta questo tutorial e la documentazione .