我了解ORDER BY
子句的工作原理以及FIELD()
功能的工作原理。我想了解的是他们两个如何一起工作来排序。如何检索行以及如何得出排序顺序
+----+---------+
| 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)
上面的查询将导致
+----+---------+
| id | name |
+----+---------+
| 3 | kenny |
| 2 | kyle |
| 1 | stan |
| 4 | cartman |
+----+---------+
类似于说 ORDER BY 3, 2, 1, 4 的东西
问题
- 这在内部如何运作?
- MySQL如何获取行,并计算排序顺序?
- MySQL 如何知道它必须按 id 列排序?