Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Meniru Fungsi ORDER MySQL BY FIELD() dalam PostgreSQL?

Bagaimana untuk Meniru Fungsi ORDER MySQL BY FIELD() dalam PostgreSQL?

Barbara Streisand
Barbara Streisandasal
2024-12-07 10:02:12625semak imbas

How to Replicate MySQL's ORDER BY FIELD() Function in PostgreSQL?

Mensimulasikan ORDER MySQL BY FIELD() dalam Postgresql

Apabila beralih daripada MySQL ke PostgreSQL, pembangun mungkin menghadapi ketiadaan fungsi ORDER BY FIELD() dalam PostgreSQL. Fungsi ini menyediakan cara yang mudah untuk mengisih rekod berdasarkan senarai nilai yang ditentukan.

Pernyataan Masalah:

Aplikasi Rails menggunakan SQL yang merangkumi klausa pesanan berikut:

SELECT * FROM `currency_codes` ORDER BY FIELD(code, 'GBP', 'EUR', 'BBD', 'AUD', 'CAD', 'USD') DESC, name ASC

Klausa ini bertujuan untuk mengisih rekod berdasarkan senarai kod mata wang yang ditentukan, dengan tambahan pesanan mengikut medan nama. Walau bagaimanapun, PostgreSQL tidak menyokong sintaks ini.

Penyelesaian:

Untuk mensimulasikan tingkah laku MySQL ORDER BY FIELD() dalam PostgreSQL, anda boleh menggunakan gabungan Kenyataan KES dan klausa ORDER BY. Begini caranya:

SELECT * FROM currency_codes
ORDER BY
CASE
  WHEN code='USD' THEN 1
  WHEN code='CAD' THEN 2
  WHEN code='AUD' THEN 3
  WHEN code='BBD' THEN 4
  WHEN code='EUR' THEN 5
  WHEN code='GBP' THEN 6
  ELSE 7
END,
name;

Dalam pendekatan ini:

  • Penyataan CASE menilai medan kod dan memberikan keutamaan yang sepadan kepada setiap kod mata wang yang disenaraikan dalam fungsi FIELD() dalam MySQL .
  • Klausa ORDER BY menggunakan keutamaan ini untuk mengisih rekod dahulu, diikuti dengan pengisihan berdasarkan nama medan.

Kaedah ini menyediakan cara yang mudah untuk mensimulasikan kelakuan MySQL ORDER BY FIELD() dalam PostgreSQL dan memastikan bahawa rekod diisih mengikut kehendak.

Atas ialah kandungan terperinci Bagaimana untuk Meniru Fungsi ORDER MySQL BY FIELD() dalam PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn