To jest poprawne i zgodne z projektem:jeśli nie poprosisz o sortowanie, serwer nie zawraca sobie głowy sortowaniem (sortowanie może być kosztowną operacją) i zwróci wiersze w dowolnej kolejności, jaką uzna za stosowną. Bez żądanej kolejności sposób uporządkowania rekordów może się nawet różnić w zależności od zapytania (choć nie jest to zbyt prawdopodobne).
Kolejność zdecydowanie nie jest losowa - to po prostu sposób, w jaki wiersze wychodzą z zapytania i jak widać, nawet drobne modyfikacje mogą znacząco zmienić tę nieporządek. Ta „niezdefiniowana” kolejność jest zależna od implementacji, nieprzewidywalna i nie należy na niej polegać.
Jeśli chcesz, aby elementy były uporządkowane, użyj ORDER BY
klauzula (to jest jej cel) - np.
SELECT name FROM difficulties ORDER BY name ASC;
To zawsze zwróci wynik posortowany według nazwy, w kolejności rosnącej. Lub, jeśli chcesz, aby były uporządkowane według klucza podstawowego, ostatni na górze, użyj:
SELECT name FROM difficulties ORDER BY id DESC;
Możesz nawet sortować według funkcji — jeśli rzeczywiście chcesz kolejność losowa, zrób to (zastrzeżenie:fatalna wydajność przy dużych stołach):
SELECT name FROM difficulties ORDER BY RAND();
Więcej szczegółów zobacz ten samouczek oraz dokumentację .