Ada juga MySQL FIELD
fungsi
.
Jika Anda ingin penyortiran lengkap untuk semua nilai yang mungkin:
SELECT id, name, priority
FROM mytable
ORDER BY FIELD(name, "core", "board", "other")
Jika Anda hanya peduli bahwa "inti" adalah yang pertama dan nilai-nilai lainnya tidak masalah:
SELECT id, name, priority
FROM mytable
ORDER BY FIELD(name, "core") DESC
Jika Anda ingin mengurutkan berdasarkan "inti" terlebih dahulu, dan bidang lainnya dalam urutan normal:
SELECT id, name, priority
FROM mytable
ORDER BY FIELD(name, "core") DESC, priority
Namun, ada beberapa peringatan di sini:
Pertama, saya cukup yakin ini hanya fungsionalitas mysql - pertanyaannya diberi tag mysql, tetapi Anda tidak pernah tahu.
Kedua, perhatikan cara FIELD()
berfungsi:ia mengembalikan indeks berbasis satu dari nilai - dalam kasus FIELD(priority, "core")
, itu akan mengembalikan 1 jika "inti" adalah nilainya. Jika nilai bidang tidak ada dalam daftar, ia mengembalikan nol . Inilah sebabnya mengapa DESC
diperlukan kecuali Anda menentukan semua nilai yang mungkin.