I tuoi risultati sono più chiari se selezioni effettivamente i valori aggregati anziché le colonne dalla tabella:
SELECT SUM(id) FROM plant ORDER BY SUM(id)
Questo restituirà la somma di tutti gli ID. Questo è ovviamente un esempio inutile perché l'aggregazione creerà sempre solo una riga, quindi non è necessario ordinare. Il motivo per cui ottieni una riga con le colonne nella tua query è perché MySQL seleziona una riga, non a caso ma nemmeno deterministica. Accade solo che nel tuo caso sia la prima colonna della tabella, ma altri potrebbero ottenere un'altra riga a seconda del motore di archiviazione, delle chiavi primarie e così via. L'aggregazione solo nella clausola ORDER BY non è quindi molto utile.
Quello che di solito vuoi fare è raggruppare in base a un determinato campo e quindi ordinare il set di risultati in qualche modo:
SELECT fruit, COUNT(*)
FROM plant
GROUP BY fruit
ORDER BY COUNT(*)
Questa è una domanda più interessante! Questo ti darà una riga per ogni frutto insieme al conteggio totale per quel frutto. Prova ad aggiungere altre mele e l'ordine inizierà effettivamente ad avere un senso:
Tabella completa:
+----+--------+
| id | fruit |
+----+--------+
| 1 | banana |
| 2 | apple |
| 3 | orange |
| 4 | apple |
| 5 | apple |
| 6 | banana |
+----+--------+
La query sopra:
+--------+----------+
| fruit | COUNT(*) |
+--------+----------+
| orange | 1 |
| banana | 2 |
| apple | 3 |
+--------+----------+