(Vysvětlení ztráty ORDER BYs )
Standard SQL v podstatě říká, že poddotaz je neuspořádaná sada řádků. To znamená, že Optimalizátor může ignorovat ORDER BYs v tabulce 'derived':FROM ( SELECT ... ORDER BY ) . V "nedávných" verzích MySQL a MariaDB, jako je ORDER BYs jsou vynechány. Existují další případy, kdy ORDER BYs je ignorováno.
V některých situací (tímto si nejsem jistý), přidáním LIMIT 99999999 (velké číslo) za ORDER BYs oklame Optimalizátor, aby provedl ORDER BYs . Stále však můžete „objednávku“ později ignorovat.
Obecné pravidlo pro MySQL:Vyhněte se poddotazům. (Jsou případy, kdy jsou poddotazy rychlejší, ale ne vaše.)
Silné pravidlo:musíte mít ORDER BYs na krajní, pokud chcete, aby byly výsledky seřazeny.
Pokud jste přidali LIMIT 3 k odvozené tabulce ve vašem prvním dotazu byste dostali pouze CHARLES, DAVID, JAMES, ale ne nutně v tomto pořadí . To znamená, že byste potřebovali dva ORDER BYs - jeden v odvozené tabulce, jeden na samém konci.