我了解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列排序?

SELECT *, FIELD(id,3,2,1,4) AS f FROM mytable WHERE id IN (3,2,1,4);然后添加ORDER BY f或ORDER BY FIELD(id,3,2,1,4)再试一次。