sql >> Database >  >> RDS >> Mysql

Mysql:Volgorde van resultaten met select from is anders dan volgorde van resultaten met select * from

Dit is correct en zo ontworpen:als je niet om sortering vraagt, doet de server geen moeite met sorteren (sorteren kan een dure operatie zijn), en het zal de rijen retourneren in elke gewenste volgorde. Zonder een aangevraagde bestelling kan de volgorde van de records zelfs per zoekopdracht verschillen (hoewel dat niet al te waarschijnlijk is).

De volgorde is zeker niet willekeurig - het is gewoon de manier waarop de rijen uit de zoekopdracht komen, en zoals je ziet, kunnen zelfs kleine wijzigingen deze on-volgorde aanzienlijk veranderen. Deze "ongedefinieerde" volgorde is afhankelijk van de implementatie, onvoorspelbaar en er mag niet op worden vertrouwd.

Als u wilt dat de elementen worden besteld, gebruikt u de ORDER BY clausule (dat is het doel) - b.v.

SELECT name FROM difficulties ORDER BY name ASC;

Dat levert altijd het resultaat gesorteerd op naam op, in oplopende volgorde. Of, als u ze wilt bestellen op de primaire sleutel, als laatste bovenaan, gebruik:

SELECT name FROM difficulties ORDER BY id DESC;

Je kunt zelfs op functie sorteren - als je echt wilt willekeurige volgorde, doe dit (voorbehoud:vreselijke prestatie met grote tabellen):

SELECT name FROM difficulties ORDER BY RAND();

Voor meer details zie deze tutorial en de documentatie .



  1. Hoe grote tabelgegevens in SQL verwijderen zonder logboek?

  2. oracle auto-increment met reeks en trigger werkt niet correct

  3. Wat is het verschil tussen SQL en MySQL?

  4. PostgreSQL 12-prestaties bewaken met OmniDB - deel 1