Това е правилно и по замисъл:ако не поискате сортиране, сървърът не се притеснява от сортиране (сортирането може да бъде скъпа операция) и ще върне редовете в какъвто ред сметне за подходящ. Без заявена поръчка начинът, по който са подредени записите, може дори да се различава от една заявка до следваща (въпреки че това не е твърде вероятно).
Редът определено не е случаен - това е просто какъвто и да е начинът, по който редовете излизат от заявката, и както виждате, дори незначителни модификации могат да променят значително това неподреждане. Това „недефинирано“ подреждане зависи от изпълнението, непредвидимо и не трябва да се разчита на него.
Ако искате елементите да бъдат подредени, използвайте ORDER BY
клауза (това е нейната цел) - напр.
SELECT name FROM difficulties ORDER BY name ASC;
Това винаги ще връща резултата, сортиран по име, във възходящ ред. Или, ако искате да са подредени по първичния ключ, последни отгоре, използвайте:
SELECT name FROM difficulties ORDER BY id DESC;
Можете дори да сортирате по функция - ако наистина искате произволен ред, направете това (предупреждение:ужасно представяне с големи таблици):
SELECT name FROM difficulties ORDER BY RAND();
За повече подробности вижте този урок и документацията .