在PostgreSQL 中模擬MySQL 的ORDER BY FIELD():SQL 相容性的解決方案
從MySQL 移轉到PostgreSQL 時,開發者經常會遇到缺少某些特定於MySQL 的功能,包括ORDER BY FIELD() 函數。此功能允許根據指定的欄位順序進行自訂排序。
對於來自 MySQL 的使用者來說,這可能是一個重大挑戰。要模擬 PostgreSQL 中 ORDER BY FIELD() 的行為,可以採用使用 CASE 表達式的解決方法。
模擬技術
CASE 表達式提供條件語句根據欄位的值為每行分配優先權。透過按所需順序為每個值分配不同的優先級,可以對行進行相應的排序。
考慮以下範例:
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:
SELECT * FROMcurrency_codes ORDER BY FIELD(code, 'GBP', 'EUR', 'BBD', 'AUD', 'CAD', 'USD ') DESC,名稱ASC
優點
其他提示
以上是如何在 PostgreSQL 中模擬 MySQL 的 ORDER BY FIELD() ?的詳細內容。更多資訊請關注PHP中文網其他相關文章!