Detta är "genom design"
SQL Server (eller något RDBMS) garanterar inte att resultat returneras i en viss ordning om ingen ORDER BY
klausul specificerades. Vissa människor tror att raderna alltid returneras i klustrad indexordning eller fysisk diskordning om ingen order by-sats anges. Det är dock felaktigt eftersom det finns många faktorer som kan ändra radordningen under frågebehandlingen. En parallell HASH-join är ett bra exempel för en operator som ändrar radordningen.
Om du anger en ORDER BY
klausul, kommer SQL Server att sortera raderna och returnera dem i önskad ordning. Men om den ordningen inte är deterministisk eftersom du har dubbla värden, är ordningen inom varje "värdegrupp" "slumpmässig" av samma skäl som nämnts ovan.
Det enda sättet att garantera en deterministisk ordning är att inkludera en garanterad unik kolumn eller kolumngrupp (till exempel den primära nyckeln) i ORDER BY
klausul.