Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Memesan berdasarkan nilai bidang tertentu terlebih dahulu

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Mengamankan MySQL:Bagian Satu

  2. SQL DELETE dengan JOIN tabel lain untuk kondisi WHERE

  3. Optimasi Kinerja Kueri di MySQL

  4. Bagaimana cara menyisipkan beberapa baris dari array menggunakan kerangka CodeIgniter?

  5. Bagaimana cara membuat kueri rekursif hierarkis MySQL?