sql >> Databáze >  >> RDS >> Mysql

Mysql:Pořadí výsledků s select from se liší od pořadí výsledků s select * from

Toto je správné a záměrné:pokud nepožádáte o řazení, server se s řazením neobtěžuje (třídění může být nákladná operace) a vrátí řádky v libovolném pořadí, které uzná za vhodné. Bez požadovaného pořadí se způsob řazení záznamů může dokonce lišit od jednoho dotazu k druhému (ačkoli to není příliš pravděpodobné).

Pořadí rozhodně není náhodné – jde jen o to, jakým způsobem vycházejí řádky z dotazu, a jak vidíte, i drobné úpravy mohou toto nepořadí výrazně změnit. Toto „nedefinované“ uspořádání je závislé na implementaci, je nepředvídatelné a nemělo by se na něj spoléhat.

Pokud chcete, aby byly prvky objednány, použijte ORDER BY doložka (to je její účel) - např.

SELECT name FROM difficulties ORDER BY name ASC;

To vždy vrátí výsledek seřazený podle názvu ve vzestupném pořadí. Nebo, pokud je chcete seřadit podle primárního klíče, poslední nahoře, použijte:

SELECT name FROM difficulties ORDER BY id DESC;

Můžete dokonce třídit podle funkce – pokud vlastně chcete náhodné pořadí, udělejte toto (varování:příšerný výkon s velkými tabulkami):

SELECT name FROM difficulties ORDER BY RAND();

Další podrobnosti viz tento návod a dokumentace .



  1. Jak zabránit duplicitním záznamům z mé tabulky Vložit ignorování zde nefunguje

  2. Proč má klauzule Oracle IN limit 1000 pouze pro statická data?

  3. Prohlášení Oracle

  4. MySQL:SyntaxError:Neočekávaný identifikátor