La clause ORDER BY s'exécute après que tout le reste de l'instruction SELECT s'exécute; dans un scénario GROUPing, le jeu de résultats est limité aux colonnes utilisées pour agréger les données. Si vous n'avez pas de colonne spécifiée dans votre jeu de résultats initial, le moteur de traitement ne sait pas quoi faire avec la sortie demandée.
En d'autres termes, étant donné que votre requête ne renvoie pas de valeurs distinctes pour t2.id et t1.id (puisqu'elles ne sont pas utilisées dans la clause GROUP BY), le moteur ne peut pas renvoyer les données dans cet ordre.