Simulating MySQL's ORDER BY FIELD() in PostgreSQL: A Solution for SQL Compatibility
Apabila berhijrah dari MySQL ke PostgreSQL, pembangun sering menghadapi ketiadaan ciri khusus MySQL tertentu, termasuk fungsi ORDER BY FIELD(). Fungsi ini membenarkan pengisihan tersuai berdasarkan susunan medan yang ditentukan.
Untuk pengguna yang datang dari MySQL, ini boleh menjadi cabaran yang ketara. Untuk mensimulasikan tingkah laku ORDER BY FIELD() dalam PostgreSQL, penyelesaian menggunakan ungkapan CASE boleh digunakan.
Teknik Simulasi
Ekspresi CASE menyediakan pernyataan bersyarat yang memberikan keutamaan kepada setiap baris berdasarkan nilai medan. Dengan memberikan keutamaan yang berbeza kepada setiap nilai dalam susunan yang dikehendaki, baris boleh diisih sewajarnya.
Pertimbangkan contoh berikut:
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; This SQL query will simulate the result of the MySQL `ORDER BY FIELD()` query provided:
PILIH * DARI currency_codes ORDER BY FIELD(kod, 'GBP', 'EUR', 'BBD', 'AUD', 'CAD', 'USD') DESC, nama ASC
Kelebihan
Petua Tambahan
Penyelesaian ini membolehkan pengguna PostgreSQL mencapai kefungsian pengisihan tersuai yang sama yang disediakan oleh MySQL ORDER BY FIELD(), mengurangkan kemungkinan cabaran keserasian yang dihadapi semasa migrasi pangkalan data.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mensimulasikan ORDER MySQL BY FIELD() dalam PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!