我了解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)
再试一次。