Rails:最后以空值排序

2024-04-16

在我的 Rails 应用程序中,我多次遇到一个问题,我想知道其他人是如何解决的:

我有某些记录,其中值是可选的,因此某些记录具有值,而某些记录对该列为空。

如果我在某些数据库上按该列排序,则空值首先排序,而在某些数据库上,空值最后排序。

例如,我有一些照片可能属于也可能不属于一个集合,即有一些照片collection_id=nil和一些地方collection_id=1 etc.

If I do Photo.order('collection_id desc)然后在 SQLite 上我最后得到空值,但在 PostgreSQL 上我首先得到空值。

有没有一种好的、标准的 Rails 方法来处理这个问题并在任何数据库中获得一致的性能?


我不是 SQL 专家,但为什么不先按是否为 null 进行排序,然后再按您想要的方式对其进行排序。

Photo.order('collection_id IS NULL, collection_id DESC')  # Null's last
Photo.order('collection_id IS NOT NULL, collection_id DESC') # Null's first

如果你只使用 PostgreSQL,你也可以这样做

Photo.order('collection_id DESC NULLS LAST')  #Null's Last
Photo.order('collection_id DESC NULLS FIRST') #Null's First

如果您想要通用的东西(比如您在多个数据库中使用相同的查询,您可以使用 (由@philT 提供 https://stackoverflow.com/a/32265291/160917)

Photo.order('CASE WHEN collection_id IS NULL THEN 1 ELSE 0 END, collection_id')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rails:最后以空值排序 的相关文章

随机推荐

  • Cherrypy 3.2.0:启动引擎在同一实例中运行 HTTP 和 HTTPS

    早上好 我在 HTTP 或 HTTPS 中成功启动了cherrypy 3 2 0引擎 ssl variable commes input parameters Bellow cherrypy configuration is fully c
  • 正则表达式 + Python - 删除所有以 * 开头的行

    我想从给定文件中删除所有以 开头的行 例如 以下内容 This needs to be gone But this line should stay remove this too End 应该生成这个 But this line shou
  • android 中动态创建的自定义进度对话框

    我已经在 asynctask 中动态创建了progressdialog 我为我的应用程序使用自定义样式 当我这样做时 我的进度对话框样式更改为白色 我需要我的默认样式为黑色和白色文本 我的java文件 class LoginTask ext
  • 具有相同空间比例的 geom_sf 的小型多个地图

    我想使用多个小地图绘制一个图形ggplot2 geom sf 这里的挑战是如何保持所有地图在图像中居中并处于相同的空间比例 这是问题 下面是可重现示例的数据 一个简单的地图使用facet wrap将所有多边形置于相同的空间尺度 但它们不居中
  • flutter ios 应用程序在 xcode 上运行,但无法在 vscode 和 android studio 上运行

    我的应用程序在 android 和 ios 上完美运行 仅使用 xcode 由于某种原因 当我使用 vsCode 或 Android studio 运行它时 它返回一个错误 Launching lib main dart on iPhone
  • 动态透视查询,无需将查询存储为字符串

    我完全熟悉链接中用于执行动态数据透视查询的以下方法 是否有另一种方法可以执行动态透视 而无需将查询存储为字符串并在其中插入列字符串 http www simple talk com community blogs andras archiv
  • 无法运行 Hyperloop 项目

    我已经从 master 下载了最新的 SDK 如下所述 http builds appcelerator com master http builds appcelerator com master 我还从这里下载了最新的 Hyperloo
  • 忽略 shell 脚本中的特定错误

    我有一小段 shell 脚本 它可能会引发许多错误 我当前将脚本设置为在出现所有错误时全局停止 不过我希望这个小部分略有不同 这是片段 recover database using backup controlfile until canc
  • C# 中的辅助方法:静态还是非静态?

    我有一个包含一些函数的类 这些函数实际上只是客户端代码可以使用其他公共访问器属性 方法自行完成的 帮助器 方法 并且我尚未决定是否应该使用 getter 实例将它们定义为属性方法 或将实例作为参数的静态方法 此外 我还从类中提取了一个接口
  • 如何使用 selenium webdriver 检查弹出窗口是否存在?

    我正在一个应用程序上运行链接测试 其中一个链接会弹出一个登录弹出窗口 有办法检查吗 我尝试将其视为警报 但没有成功 try WebDriverWait wait new WebDriverWait driver 2 wait until E
  • 图表轴标签格式VBA设置

    我正在编写 vb 脚本来生成图表 在 X 轴上有日期 在 Y 轴上有温度 在 X 轴上 我想以 dd mm 格式显示时间 我的数据如下所示 2014 06 17 01 00 2014 06 17 02 00 2014 06 17 03 00
  • MainWindow 对象没有属性“connect”

    我想知道是否有人可以帮助我解决有关 PyQt5 中插槽连接的问题 下面的代码片段将告诉你我的问题是什么 class MainWindow QMainWindow def init self super MainWindow self ini
  • 从 DialogFragment 设置状态栏颜色

    我正在创建一个动态更改状态栏颜色的应用程序 当从任何片段调用时 我在主 Activity 类中的方法都可以正常工作 片段放置在 Activity pager 中 public void setStatusBarColorIfPossible
  • 正在发生 mongoDB 写入,然后读取必须等待或不等待

    当 mongoDB 写入发生时 读取必须等待或不等待 当 mongoDB 要在 mongodb 中写入一些文档时 会发生写锁并且 其他线程尝试读取其他文档 那么它应该等待直到写锁释放或不释放 所有读锁和写锁之间是否存在依赖关系 来自docs
  • boost::Optional 到 bool 的转换

    如何防止该代码的最后一行编译 include
  • 如何从 openssl 生成的密钥生成 X.509 证书

    我有一个在 ec2 实例上运行的 Web 服务器 该实例在内部调用使用 Spring Boot 构建的 REST 服务器 现在 我正在尝试让此 REST 服务器在 SSL 下运行 这是我到目前为止所做的 1 使用此命令创建 CSR 和密钥文
  • 我该如何解决这个错误?字段从未分配并且始终具有空值[重复]

    这个问题在这里已经有答案了 我创建了 4 个 C 脚本 当我运行 2d unity 游戏时 我在控制台中看到此警告 Assets Scripts GameHandler cs 7 34 警告 CS0649 字段 GameHandler ca
  • 使用 spring-data-rest 定义路径“/{resourcename}/search/”的自定义方法

    我很困惑 我无法找到如何将自定义 搜索 方法与在 spring data rest 的帮助下加载的方法一起定义 您能回答我吗 该框架是否具有 开箱即用 的可能性 如果有的话 你能告诉我 在哪里可以找到它吗 为了更深入地了解我的情况 我描述了
  • Meteor.http.call 不允许 Access-Control-Allow-Origin

    当我尝试使用 Meteor 调用外部服务器进行 JSON 查询时Meteor http call GET 方法我收到错误消息 Access Control Allow Origin不允许 如何允许我的 Meteor 应用程序向其他服务器发出
  • Rails:最后以空值排序

    在我的 Rails 应用程序中 我多次遇到一个问题 我想知道其他人是如何解决的 我有某些记录 其中值是可选的 因此某些记录具有值 而某些记录对该列为空 如果我在某些数据库上按该列排序 则空值首先排序 而在某些数据库上 空值最后排序 例如 我