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

Bagaimana untuk Mensimulasikan ORDER MySQL BY FIELD() dalam PostgreSQL?

DDD
Lepaskan: 2024-12-31 08:04:10
asal
317 orang telah melayarinya

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

Mensimulasikan ORDER MySQL BY FIELD() dalam PostgreSQL

Sebagai pengguna MySQL yang beralih kepada PostgreSQL, anda mungkin menghadapi had yang ORDER BY Sintaks FIELD() tidak disokong dalam pangkalan data yang terakhir. Ini menimbulkan persoalan tentang cara meniru tingkah lakunya dalam PostgreSQL.

Masalah:

MySQL membolehkan anda mentakrifkan pesanan tersuai menggunakan klausa ORDER BY FIELD(). Ia memerlukan nilai dan satu siri nilai yang dijangkakan dan hasil pertanyaan diisih mengikut tertib nilai yang disediakan.

Sebagai contoh:

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

Pertanyaan ini akan mengutamakan baris dengan kod 'GBP', 'EUR', 'BBD', 'AUD', 'CAD' dan 'USD' dalam tertib itu, sambil menyusun lagi keputusan dalam tertib menaik dengan lajur 'nama'.

Penyelesaian:

Dalam PostgreSQL, anda boleh mencapai kefungsian yang serupa menggunakan gabungan penyataan CASE dan susunan mengikut nilai angka yang terhasil.

Begini cara anda boleh mensimulasikan gelagat ORDER BY FIELD() klausa:

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;
Salin selepas log masuk

Dalam pertanyaan ini:

  • Pernyataan CASE memberikan nilai berangka (1-6) kepada setiap nilai yang ditentukan bagi lajur 'kod'.
  • Baris dengan nilai yang ditentukan diisih mengikut tertib berangka mengikut nilai yang ditetapkan.
  • Jika nilai lajur 'kod' tidak sepadan dengan mana-mana nilai yang ditentukan, ia menerima nilai lalai sebanyak 7.
  • Hasilnya diisih selanjutnya dalam tertib menaik mengikut lajur 'nama'.

Teknik ini membolehkan anda mengutamakan baris berdasarkan susunan yang telah ditetapkan, memberikan penghampiran yang hampir dengan fungsi MySQL ORDER BY FIELD() fasal.

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

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan