从 MySQL 过渡到 PostgreSQL 时,开发人员可能会遇到 PostgreSQL 中缺少 ORDER BY FIELD() 函数的情况。此函数提供了一种根据指定值列表对记录进行排序的便捷方法。
问题陈述:
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;
在此方法中:
此方法提供了一种方便的方法来模拟 PostgreSQL 中 MySQL 的 ORDER BY FIELD() 的行为,并确保记录按需要排序。
以上是如何在 PostgreSQL 中复制 MySQL 的 ORDER BY FIELD() 函数?的详细内容。更多信息请关注PHP中文网其他相关文章!