Vaše výsledky budou jasnější, pokud z tabulky vyberete agregované hodnoty namísto sloupců:
SELECT SUM(id) FROM plant ORDER BY SUM(id)
Tím se vrátí součet všech ID. Toto je samozřejmě zbytečný příklad, protože agregace vždy vytvoří pouze jeden řádek, takže není třeba objednávat. Důvod, proč ve svém dotazu získáte sloupce qith řádek, je ten, že MySQL vybere jeden řádek, ne náhodně, ale ani deterministicky. Náhodou se ve vašem případě jedná o první sloupec v tabulce, ale ostatní mohou získat další řádek v závislosti na úložišti, primárních klíčích a tak dále. Agregace pouze v klauzuli ORDER BY tedy není příliš užitečná.
Co obvykle chcete udělat, je seskupení podle určitého pole a pak seřadit sadu výsledků nějakým způsobem:
SELECT fruit, COUNT(*)
FROM plant
GROUP BY fruit
ORDER BY COUNT(*)
Teď je to zajímavější dotaz! Tím získáte jeden řádek pro každé ovoce spolu s celkovým počtem pro toto ovoce. Zkuste přidat více jablek a objednávka začne dávat smysl:
Kompletní tabulka:
+----+--------+
| id | fruit |
+----+--------+
| 1 | banana |
| 2 | apple |
| 3 | orange |
| 4 | apple |
| 5 | apple |
| 6 | banana |
+----+--------+
Výše uvedený dotaz:
+--------+----------+
| fruit | COUNT(*) |
+--------+----------+
| orange | 1 |
| banana | 2 |
| apple | 3 |
+--------+----------+