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

Dlaczego wyniki zapytania SQL nie są zwracane w oczekiwanej przeze mnie kolejności?

Kolejność zapytania można wymusić za pomocą klauzuli „Order by” w instrukcji. Baza danych SQL w rzeczywistości nie rozumie, w jakiej kolejności umieszczasz elementy lub przechowujesz dane w określonej kolejności. Oznacza to, że musisz powiedzieć SQL, w jakiej kolejności chcesz mieć elementy. Na przykład:

Select * from Table
  order by column1 desc

Pomyśl o tym, jak wręczenie przyjaciółce kilku rzeczy do trzymania - później będzie miała to wszystko dla ciebie, ale w międzyczasie przechowuje je gdzieś. Może go przenosić, gdy nie chcesz zrobić miejsca na coś innego, lub może oddać go w tej samej kolejności, w jakiej jej go podałeś, ale nie powiedziałeś jej, aby utrzymywała go w porządku, więc nie .

Bazy danych muszą być w stanie przenosić rzeczy w tle, więc sposób, w jaki są zbudowane, nie zawiera informacji o żadnej kolejności - musisz znać kolejność, gdy przekazujesz ją do bazy danych, aby móc umieścić ją z powrotem w zamówienie chcesz później. Klauzula order umożliwia SQLowi narzucenie porządku na dane, ale nie pamięta lub nie ma go samodzielnie.

Ważny punkt :Nawet jeśli SQL zwrócił elementy we właściwej kolejności bez kolejności według instrukcji przez ostatni milion razy, nie gwarantuje, że to zrobi. Nawet jeśli w tabeli istnieje indeks klastrowy, nie ma gwarancji, że wyniki zostaną zwrócone w oczekiwanej kolejności. Zwłaszcza gdy zmieniają się wersje SQL, nieużywanie klauzuli order by może zepsuć programy, które zakładają, że zapytanie będzie w żądanej kolejności!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQLDumper:narzędzie do tworzenia kopii zapasowych baz danych MySQL oparte na PHP i Perlu

  2. Jak utworzyć tabelę w SQL – przykładowe zapytanie Postgres i MySQL

  3. Przestarzałe:mysql_connect()

  4. Jak naprawić serializowany ciąg, który został uszkodzony przez nieprawidłową długość licznika bajtów?

  5. Czym jest kardynalność w MySQL?