Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Mysql:Die Reihenfolge der Ergebnisse mit select from unterscheidet sich von der Reihenfolge der Ergebnisse mit select * from

Das ist richtig und beabsichtigt:Wenn Sie nicht nach Sortierung fragen, kümmert sich der Server nicht um die Sortierung (Sortieren kann eine teure Operation sein), und es gibt die Zeilen in der Reihenfolge zurück, die es für richtig hält. Ohne eine angeforderte Reihenfolge kann sich die Reihenfolge der Datensätze sogar von einer Abfrage zur nächsten unterscheiden (obwohl das nicht allzu wahrscheinlich ist).

Die Reihenfolge ist definitiv nicht zufällig - es ist einfach die Art und Weise, wie die Zeilen aus der Abfrage kommen, und wie Sie sehen, können selbst geringfügige Änderungen diese Unordnung erheblich ändern. Diese "undefinierte" Reihenfolge ist implementierungsabhängig, unvorhersehbar und sollte nicht zuverlässig sein.

Wenn Sie möchten, dass die Elemente geordnet werden, verwenden Sie den ORDER BY Klausel (das ist ihr Zweck) - z.B.

SELECT name FROM difficulties ORDER BY name ASC;

Dadurch wird das Ergebnis immer nach Namen sortiert in aufsteigender Reihenfolge zurückgegeben. Oder, wenn Sie möchten, dass sie nach dem Primärschlüssel sortiert werden, ganz oben, verwenden Sie:

SELECT name FROM difficulties ORDER BY id DESC;

Sie können sogar nach Funktion sortieren - wenn Sie wollen zufällige Reihenfolge, tun Sie dies (Vorbehalt:schreckliche Leistung mit großen Tabellen):

SELECT name FROM difficulties ORDER BY RAND();

Weitere Einzelheiten finden Sie in diesem Tutorial und die Dokumentation .