首頁 > 資料庫 > mysql教程 > 如何在 PostgreSQL 中複製 MySQL 的 ORDER BY FIELD() 函數?

如何在 PostgreSQL 中複製 MySQL 的 ORDER BY FIELD() 函數?

Barbara Streisand
發布: 2024-12-07 10:02:12
原創
594 人瀏覽過

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

在Postgresql 中模擬MySQL 的ORDER BY FIELD()

從MySQL 過渡到PostgreSQL 時,開發人員可能會遇到PostgreSQL 中缺少ORDER BYM函數的情況。此函數提供了一種根據指定值清單對記錄進行排序的便捷方法。

問題陳述:

Rails 應用程式使用包含以下排序子句的SQL:

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

此子句旨在根據指定的貨幣代碼清單對記錄進行排序,並按名稱欄位進行附加排序。但是,PostgreSQL 不支援此語法。

解決方案:

要在 PostgreSQL 中模擬 MySQL 的 ORDER BY FIELD() 的行為,可以使用以下組合CASE 語句和 ORDER BY 子句。具體方法如下:

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;
登入後複製

在此方法中:

  • CASE 語句評估代碼字段,並為MySQL 中的FIELD() 函數中列出的每種貨幣代碼分配相應的優先權.
  • ORDER BY子句使用此優先順序首先對記錄進行排序,然後根據名稱進行排序

此方法提供了一種方便的方法來模擬PostgreSQL 中MySQL 的ORDER BY FIELD() 的行為,並確保記錄按需要排序。

以上是如何在 PostgreSQL 中複製 MySQL 的 ORDER BY FIELD() 函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板