Eu entendo como a ORDER BY
cláusula funciona e como a FIELD()
função funciona. O que eu quero entender é como os dois trabalham juntos para classificar. Como as linhas são recuperadas e como a ordem de classificação é derivada
+----+---------+
| id | name |
+----+---------+
| 1 | stan |
| 2 | kyle |
| 3 | kenny |
| 4 | cartman |
+----+---------+
SELECT * FROM mytable WHERE id IN (3,2,1,4) ORDER BY FIELD(id,3,2,1,4)
A consulta acima resultará em
+----+---------+
| id | name |
+----+---------+
| 3 | kenny |
| 2 | kyle |
| 1 | stan |
| 4 | cartman |
+----+---------+
algo semelhante a dizer ORDER BY 3, 2, 1, 4
PERGUNTAS
- Como isso funciona internamente?
- Como o MySQL obtém as linhas e calcula a ordem de classificação?
- Como o MySQL sabe que precisa classificar pela coluna id?