Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Mysql:Kolejność wyników z select z jest inna niż kolejność wyników z select * z

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ę .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zamów MySQL przed Grupuj według

  2. Aktualizowanie już zaznaczonych pól wyboru w PHP

  3. Czy istnieje mysql JDBC, który będzie respektował fetchSize?

  4. MySQL:sprzężenie wewnętrzne vs. Gdzie

  5. Korzystanie z operatora Z WYJĄTKIEM na MySql 5.1 w wersji