sql >> Base de Datos >  >> RDS >> Mysql

Mysql:el orden de los resultados con select from es diferente al orden de los resultados con select * from

Esto es correcto y por diseño:si no solicita la clasificación, el servidor no se molesta en clasificar (ordenar puede ser una operación costosa), y devolverá las filas en el orden que considere adecuado. Sin un pedido solicitado, la forma en que se ordenan los registros puede diferir de una consulta a otra (aunque eso no es muy probable).

Definitivamente, el orden no es aleatorio:es simplemente la forma en que las filas salen de la consulta y, como puede ver, incluso las modificaciones menores pueden cambiar este desorden de manera significativa. Este orden "indefinido" depende de la implementación, es impredecible y no se debe confiar en él.

Si desea que los elementos estén ordenados, use el ORDER BY cláusula (ese es su propósito) - p.

SELECT name FROM difficulties ORDER BY name ASC;

Eso siempre devolverá el resultado ordenado por nombre, en orden ascendente. O, si los quiere ordenados por la clave principal, el último en la parte superior, use:

SELECT name FROM difficulties ORDER BY id DESC;

Incluso puede ordenar por función, si realmente quiere orden aleatorio, haga esto (advertencia:rendimiento horrible con tablas grandes):

SELECT name FROM difficulties ORDER BY RAND();

Para más detalles vea este tutorial y la documentación .