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
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;
Dalam pertanyaan ini:
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!