Saya mengerti bagaimana ORDER BY
klausa bekerja dan bagaimana FIELD()
fungsinya bekerja. Yang ingin saya pahami adalah bagaimana keduanya bekerja sama untuk menyortir. Bagaimana baris diambil dan bagaimana urutan sortir diturunkan
+----+---------+
| 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)
Kueri di atas akan menghasilkan
+----+---------+
| id | name |
+----+---------+
| 3 | kenny |
| 2 | kyle |
| 1 | stan |
| 4 | cartman |
+----+---------+
sesuatu yang mirip dengan mengatakan ORDER OLEH 3, 2, 1, 4
PERTANYAAN
- Bagaimana cara kerjanya secara internal?
- Bagaimana cara MySQL mendapatkan baris, dan menghitung urutan pengurutan?
- Bagaimana MySQL tahu harus mengurutkan berdasarkan kolom id?
SELECT *, FIELD(id,3,2,1,4) AS f FROM mytable WHERE id IN (3,2,1,4);
Kemudian tambahkanORDER BY f
atauORDER BY FIELD(id,3,2,1,4)
dan coba lagi.