Postgres子查询,按子查询排序

2023-12-29

如果我有一个查询,例如:

select * from tbl where id in (10, 20, 9, 4);

返回的结果可能按以下顺序排列: 4、 9、 10、 20

但是如果想要维护传递到初始查询中的列表的顺序怎么办?你会如何处理这个问题?

最终,我在这里使用 Django 作为我的应用程序的 ORM,但我希望首先研究数据库级别的可行性。

任何想法都非常欢迎!


使用 CASE 不太方便移植,因为您必须提前知道所有值以及要排序的顺序。最简洁的方法是使用数组来存储值,并按数组中项目的索引进行排序。

我已将其发布到 Postgres片段库 http://wiki.postgresql.org/wiki/Array_Index一会儿回来。

CREATE OR REPLACE FUNCTION idx(anyarray, anyelement)
  RETURNS int AS 
$$
  SELECT i FROM (
     SELECT generate_series(array_lower($1,1),array_upper($1,1))
  ) g(i)
  WHERE $1[i] = $2
  LIMIT 1;
$$ LANGUAGE sql IMMUTABLE;

选择 * 来自富 ORDER BY idx(array['新生','大二','大三','大四'], foo.grade_level)

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

Postgres子查询,按子查询排序 的相关文章

  • 加入多对多关系

    我有三个表 applications permissions 和 applications permissions applications applications permissions permissions id lt applic
  • 错误:重复的键值违反了 postgreSQL 中的唯一约束

    我在更新表时遇到 postgresql 中的唯一约束问题 我有一个包含 3 列的表 并且对其中一列 internal state 有唯一约束 该表只有两列 internal state 的值为 1 0 更新查询是 UPDATE backfe
  • Postgres如何从外部服务器传输所有枚举

    我有两个数据库 我希望能够在它们之间传输数据 因此我想将一个大型模式从一个数据库导入到另一个数据库 其中有枚举的分配 所以我遇到了这里描述的问题SQL 创建具有枚举列的外部表时出错 https stackoverflow com quest
  • jsonb 与 jsonb[] 对于客户的多个地址

    在 PostgreSQL 的 jsonb 字段中保存多个地址是个好主意 我是 nosql 新手 我想测试 PostgreSQL 来做到这一点 我不想有另一个包含地址的表 我更喜欢将其放在同一个表中 但我有疑问 我见过PostreSQL有js
  • 使用 postgresql DB 存储 NULL 值需要多少磁盘空间?

    假设我的表上有一列定义了以下内容 MyColumn smallint NULL 存储 0 1 或其他值等值应该需要 2 个字节 1 但是如果我将 MyColumn 设置为NULL 需要多少空间 需要0字节吗 出于管理目的或每列 行是否有一些
  • 如何在PostgreSQL事务中使用变量

    如何在 Postgresql 事务内部将值获取到变量中 如果 SELECT 没有返回任何内容 则抛出错误 如果 SELECT 返回数据 则在事务中使用它们 像这样 BEGIN activeRounds SELECT FROM rounds
  • 返回动态列集

    我创建了以下函数来根据该函数的参数返回列集 CREATE OR REPLACE FUNCTION getColumns IN column1 text IN column2 text IN column3 text IN column4 t
  • 是否可以使用纬度和经度的舍入值向 Postgres 表添加约束?

    我有一个存储纬度和经度数据的表 像下面这样 CREATE TABLE geo sample id uuid DEFAULT uuid generate v4 latitude FLOAT NOT NULL longitude FLOAT N
  • 从两个不同的表中减去值

    考虑表X A 1 2 3 3 6 考虑表 Y A 0 4 2 1 9 如何编写一个查询来获取这两个表之间的差异 以计算下表 例如表 Z A 1 2 1 2 3 目前尚不清楚你想要什么 会是这个吗 SELECT SELECT SUM A FR
  • 在 Postgresql 中使用标识符重新排序列

    以下代码可以工作并创建一个带有序列号的临时表 该表会为每个新名称重新启动 with results as select row number over partition by name order BY name as mytid nam
  • 使用 pyspark 连接 PostgreSQL

    我正在尝试使用 pyspark 连接到数据库 并且使用以下代码 sqlctx SQLContext sc df sqlctx load url jdbc postgresql hostname database dbtable SELECT
  • Postgres 在并发更新插入时出现死锁

    我们有一个从数据流中读取信息并将该信息更新到数据库中的应用程序 数据是 Google Drive 上发生的变化 这意味着影响相同对象的许多事件可能会非常接近地发生 将此信息更新插入数据库时 我们遇到了死锁 日志中显示的内容如下 我已经重建并
  • “PG DuplicateTable:错误关系“产品”已存在”- Heroku db:迁移尝试

    Rails 菜鸟尝试将 DB 迁移到 Heroku 请原谅这个错误消息的多汁性 但我认为将其全部包含在内可能很重要 我不知道为什么会发生这种情况 也不知道这意味着什么 我的架构中只有一张产品表和一张创建产品迁移表 Migrating to
  • WHERE BETWEEN 子句中的 PostgreSQL jsonb 值

    我的数据库表 a table 中有 jsonb 字段 其中包含 int 值 例如 abc def ghk 500 我将使用 WHERE 子句创建带有此字段 ghk 过滤器的 SELECT SELECT FROM a table WHERE
  • “psycopg2 的构建轮子失败” - 使用 virtualenv 和 pip 的 MacOSX

    我第一次尝试与其他几个人一起制作一个网站 在尝试使用 Django Python VirtualEnv 时遇到了一个奇怪的错误 我已经找到了针对其他操作系统 例如 Ubuntu 的此问题的解决方案 但找不到针对 Mac 的任何好的解决方案
  • 如果数组重叠,则折叠多行数组

    我在 PostgreSQL 9 3 中有一个表 其中包含一个列 每行包含一个数组 我正在努力寻找崩溃的方法 共享相同元素的数组行 Examples 简单重叠 给定以下两行数组 1 2 3 5 3 6 9 结果将是一行包含 5 1 2 3 6
  • 如何配置 pgAdmin III 在启动时打开默认数据库并选择表节点?

    当我启动 pgAdmin III 时 99 的情况下我都需要查看某个特定数据库的表 每次都要点击树 很烦人 当我打开 pgAdmin 时 我希望它自动连接到我的最后一个数据库并展开左侧的树并选择 表 节点 那可能吗 同样令人烦恼的是 当我重
  • PostgreSQL 中的逆透视表

    我有下表作为 SUM Case End 的结果 Account Product A Product B Product C 101 1000 2000 3000 102 2000 1000 0 103 2000 1000 0 104 200
  • 查找一列中具有相同值而另一列中具有其他值的行?

    我有一个 PostgreSQL 数据库 将用户存储在users他们参与的表格和对话conversation桌子 由于每个用户可以参与多个对话 并且每个对话可以涉及多个用户 因此我有一个conversation user链接表来跟踪哪些用户正
  • Postgres - 这是在布尔列上创建部分索引的正确方法吗?

    我有下表 CREATE TABLE recipemetadata Lots of columns diet glutenfree boolean NOT NULL 大多数每一行都会被设置为FALSE除非有人想出一些席卷全国的疯狂新无麸质饮食

随机推荐

  • *onbeforeunload* 是否在 Safari (macOS) 上缓存?

    我添加了一个事件监听器beforeunload 按照惯例 https developer mozilla org en docs Web API WindowEventHandlers onbeforeunload在我的 JS ReactJ
  • 重新使用现有 Microsoft Identity 用户表时密码(哈希)不匹配

    我们有一个现有的 SQL 数据库微软身份表 最初由 ASP NET Core 应用程序生成 我们还有一个 ASP NET 4 应用程序 它也使用 Microsoft Identity 我们希望 ASP NET 4 应用程序能够使用同一数据库
  • subversion中“让深度粘性”有什么作用?

    我很难找到有关在 SVN 工作副本上使用粘性深度设置的行为的明确文档 在 SVN 中 当使用 更新到修订版本 对话框时 会有一个 使深度粘性 复选框 使深度粘性和非粘性之间有哪些有效区别 当深度为粘性时 您每次更新时都将使用相同的设置进行更
  • PHP以真正的二进制方式读取二进制文件

    我在谷歌上搜索了我的问题 但没有找到解决方案 我想读取一个文件并将缓冲区转换为二进制 例如 10001011001011001 如果我从文件中有这样的东西 bmoov lmvhd tF tF K T trak tkh d tF tF K e
  • Symfony 2:安装并启用 intl 扩展

    我在用着XAMPP for Windows并决定尝试一下Symfony 2 当我到达时Symfony Configuration它建议我安装并启用的页面intl 我尝试阅读PEAR s and PECL s指导 因为我完全0关于这个主题 开
  • std::ostringstream 覆盖初始化字符串

    以下代码会生成 0004567 铿锵 7 https repl it agustinf ostringstream bug or anti feature main cpp include
  • 连接到 Github 时“无法生成 ssh”,但 ssh -T [电子邮件受保护] 有效?

    我很难让 Github Netbeans 正常工作 我想将 ssh 与 git 在 Windows 7 上 结合使用来提交或克隆项目 但我不断收到此错误消息 git clone email protected cdn cgi l email
  • NSOutlineView 缩进问题

    我使用 NSOutlineView 对象来表示文件结构 并发现它不会正确缩进任何可扩展的子项 尽管它会缩进不可扩展的子项 这是一张图片来说明我的意思 在此示例中 AnotherFolder 是 Folder2 的子级 但它没有与其他缩进文件
  • F# 中的代码分析

    作为一名 C 开发人员 我从 Microsoft 的代码分析中受益匪浅 然而 在 F 中 代码分析似乎并不是开发周期的一个组成部分 我花了一段时间才在 F 项目上启用 CA 但这博客有帮助 http blog nikosbaxevanis
  • 将 div 水平和垂直居中,并在调整父级大小时保持居中[重复]

    这个问题在这里已经有答案了 我想始终将 div 水平和垂直居中 我可以减少 增加窗口的宽度 div 将通过始终保持在窗口的中心进行响应 cent height 50px width 50px background color black m
  • 是否可以使用 winmerge 查看 cygwin 的 git diff?

    我喜欢在 cygwin 上使用 git 但唯一的缺点是当我想这样做时git difftool我无法使用任何有用的东西 git diff大多数时候对我来说很好 但有时我想使用 winmerge 通过以下方式查看这些差异git difftool
  • 想要将特定的 div 向右移动

    我想将特定的 div 移到右侧 以便左侧的 div 获得更多空间来显示其中的内容 我在 CSS 中尝试了一些东西 但我知道我做错了 在 CSS 中 我 login box width 200px margin left 50px 您可以在该
  • 查找所有子项完全匹配的父项 ID

    场景 假设我们有一组代表四个关键概念的数据库表 实体类型 例如帐户 客户等 实体 例如上述实体类型的实例 同类群组 命名组 群组成员 组成群组成员的实体 群组的规则是 一个队列始终至少有一名队列成员 群组成员对于该群组必须是唯一的 即实体
  • Tensorflow、多标签精度计算

    我正在研究多标签问题 并试图确定模型的准确性 我的型号 NUM CLASSES 361 x tf placeholder tf float32 None IMAGE PIXELS y tf placeholder tf float32 No
  • 如何在 iOS 应用程序中阻止屏幕截图

    我想构建一个应用程序 在其中我想阻止用户的屏幕截图 就像在 Netflix 应用程序中一样 它应该像在 Netflix 中一样返回黑屏截图 现在我无法得到任何有关此事的信息 不知道Netflix是怎么处理的 有什么方法可以检测块中捕获的图像
  • 提高大小超过 40 GB (Sql Server 2005) 且每月增长约 3GB 的数据库性能的技巧

    当前的数据库或我们的项目本月已超过 40 GB 平均每月增长约 3 GB 现在 所有表都已最佳规范化 并且已使用正确的索引 但随着规模的增长 即使是像 select count 1 from table 这样的基本查询 也需要更多的时间来触
  • spring hibernate没有获取参数的值

    我尝试使用以下命令进行 API 调用post通过邮递员的方法到我的 Spring Boot 应用程序 这是输入 username name password 1234 age 12 salary 5000 role 1 这是控制器中的代码
  • 仅选择在特定时间发生的行

    我已经读过C csv和datetime列是一个object type 我想得到每一行23 45 00无论日期如何 都在其中 我想拥有datetime作为索引 我想转换datetimedatetime64 ns 的索引 我相信 pandas
  • Knockout JS单选按钮点击事件重置选择

    我在单选按钮列表上绑定了 选中 和 单击 事件 但每当单击单选按钮时 选择都不会保留 我一定做错了什么 如果你们能指出我正确的方向 我真的很感激 请参阅在这里小提琴 http jsfiddle net rasikasampath jhHkD
  • Postgres子查询,按子查询排序

    如果我有一个查询 例如 select from tbl where id in 10 20 9 4 返回的结果可能按以下顺序排列 4 9 10 20 但是如果想要维护传递到初始查询中的列表的顺序怎么办 你会如何处理这个问题 最终 我在这里使