当前位置: 首页 > 面试题库 >

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

裴弘
2023-03-14
问题内容

刚从MySQL首次尝试PostgreSQL。在我们的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;


 类似资料:
  • 问题内容: 我想找到一种优雅的方法来模拟Postgres中MySQL的subtring_index()函数的行为。 在MySQL中,它很简单: 但是我目前在PGSQL上的工作非常丑陋: 也许有使用正则表达式的更优雅的解决方案,或者甚至将字符串拆分为一个变量数组,如果该字符串是从子查询或其他内容派生的,则可以减少开销,我欢迎提出任何建议。 问题答案: 总是花时间浏览手册。 http://www.po

  • 问题内容: 如何在MySQL中的此表上做滞后处理以打印引号中的差异,例如: 问题答案: 这是我最喜欢的MySQL hack。 这是模拟滞后函数的方式: 保存上一行报价的值。对于第一行,@ quot是-1。 保留当前行的报价的值。 笔记: 子句在这里很重要,就像在常规窗口函数中一样。 您可能还想使用lag 来确保计算相同引号的差异。 您也可以以相同的方式实现行计数器 与该方案相比,与使用聚合函数,存

  • 问题内容: 我们将MySQL与InnoDB存储引擎和事务一起大量使用,并且遇到了一个问题:我们需要一种很好的方法来在MySQL中模拟Oracle的SEQUENCE。要求是:-并发支持- 事务安全-最大性能(意味着最小化锁和死锁) 我们不在乎是否不会使用某些值,即顺序上的间隔是可以的。有一个简单的方法来存档,即通过创建一个带有计数器的单独的InnoDB表,但这意味着它将参与事务并引入锁和等待。我正在

  • 问题内容: 我正在开发一个Web应用程序,该应用程序显然在iOS设备中存在问题。问题是我不拥有iOS设备,而是在Linux Ubuntu中进行开发。我正在寻找一种在Linux(尤其是浏览器)中仿真/模拟此OS的方法,但是还没有找到任何东西。 到目前为止,我发现的是iOS SDK的Simulator,但这是针对Mac的。还有一些Windows模拟器。有人做过吗? 问题答案: 我能想到的唯一解决方案是

  • 问题内容: 最近,我对PostgreSQL(使用8.2)非常熟悉,发现date_trunc函数对于轻松匹配某些天/月/等之间的时间戳非常有用。我认为,该功能的真正有用之处在于它可以将输出保持为时间戳格式。 我不得不切换到mySQL(5.0)并找到一些日期功能,而这些功能在比较中是比较缺乏的。提取函数似乎很有用,我发现的日期函数解决了我的一些问题,但是有没有办法复制PostgreSQL的date_t

  • 问题内容: 我有一些程序在评估病情后想得到某种确认。 例如,pusedocode就像 我应该如何在MySQL中做到这一点? 问题答案: 如果您不想两次将文本用作列标题和值,请使用以下stmt!