sql >> Database teknologi >  >> RDS >> Mysql

Mysql:Rækkefølgen af ​​resultater med vælg fra er forskellig fra rækkefølgen af ​​resultater med vælg * fra

Dette er korrekt og designmæssigt:hvis du ikke beder om sortering, gider serveren ikke sortere (sortering kan være en dyr operation), og den vil returnere rækkerne i den rækkefølge, den finder passende. Uden en anmodet ordre kan den måde, posterne er ordnet på, endda variere fra den ene forespørgsel til den næste (selvom det ikke er alt for sandsynligt).

Rækkefølgen er bestemt ikke tilfældig - det er bare hvilken måde rækkerne kommer ud af forespørgslen på, og som du kan se, kan selv mindre ændringer ændre denne af-rækkefølge betydeligt. Denne "udefinerede" rækkefølge er implementeringsafhængig, uforudsigelig og bør ikke stoles på.

Hvis du ønsker, at elementerne skal bestilles, skal du bruge ORDER BY klausul (det er dens formål) - f.eks.

SELECT name FROM difficulties ORDER BY name ASC;

Det vil altid returnere resultatet sorteret efter navn i stigende rækkefølge. Eller, hvis du vil have dem sorteret efter den primære nøgle, sidst på toppen, brug:

SELECT name FROM difficulties ORDER BY id DESC;

Du kan endda sortere efter funktion - hvis du faktisk ønsker tilfældig rækkefølge, gør dette (advarsel:forfærdelig præstation med store borde):

SELECT name FROM difficulties ORDER BY RAND();

For flere detaljer se dette selvstudie og dokumentationen .



  1. SELECT DISTINCT ignorerer forskellige tilfælde

  2. Klip automatisk strenge til den rigtige længde på indsatsen

  3. PDO var rækker berørt under execute statement

  4. Returner forespørgselsresultater som en kommasepareret liste i Oracle