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

本文探讨了如何在PostgreSQL中模拟MySQL的FIELD函数排序行为。通过使用CASE WHEN语句实现特定顺序排序,并保持其他字段的正常排序逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Hello all,

Just trying out Postgresql for the first time, coming from MySQL. In our Rails application we have a couple of locations with SQL like so:

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

It didn't take long to discover that this is not supported/allowed in Postgresql.

Does anyone know how to simulate this behaviour in Postgres or do we have to pull to sorting out into the code?

Thanks

Peer

 

 

Ah, gahooa was so close:

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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值