只是第一次try PostgreSQL,来自MySQL.在我们的Rails应用程序中,我们有几个使用SQL的位置,比如:

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

没过多久就发现PostgreSQL中不支持/不允许这样做.

有没有人知道如何在PostgreSQL中模拟这种行为,或者我们必须将排序拉到代码中?

推荐答案

啊,gahooa离得太近了:

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;

Mysql相关问答推荐

MySQL在带有特定属性值上的对象的数组的杨森对象中搜索

同一类型对象之间的多对多关系

过程/别名是有点长的MySQL命令的一部分吗?

如果WHERE语句包含所有列,唯一键顺序是否重要?

如何从MySQL数据库中提取入职第一个月的工作天数?

实体内约束的唯一增量 ID 生成

如何计算具有权重属性的记录数

时间戳上滚动窗口的 SQL 计数不同

如何使用sql查询在日期列中按值和最大值分组的表中添加列?

使用数据表的直方图(SQL 查询)

在 MySQL 中转换 JSON 数组值

用两个新列制作表格,按偶数或奇数对另一列进行分类,并将一个类别中的所有偶数和奇数相加

如何在 MySQL 中搜索多个列?

ASP.NET EntityFramework 获取数据库名称

在另一个 where 语句(子查询?)中使用一个 sql 查询的结果

MySQL 删除多列

MySQL:唯一字段需要是索引吗?

带有 LIKE 运算符的 Select 语句中的 MySQL case

设计用户角色和权限系统的最佳实践?

数据截断:第 1 行的logo列数据太长